Type/to search
0
Follow
48
Followers
SuperTrend V.1--সুপার ট্রেন্ড লাইন সিস্টেম
Original
Created 2020-04-20 22:10:36  Updated 2024-12-12 21:03:30
 28
 12168

img

1. গল্পের উৎপত্তি

আমার ভালো বন্ধু Ran Ge দীর্ঘদিন ধরে এই সূচকটি পর্যবেক্ষণ করে আসছেন এবং এটিকে পরিমাণে রূপান্তরিত করা যায় কিনা তা নিয়ে আলোচনা করার জন্য নববর্ষের দিন আগে আমাকে এটি সুপারিশ করেছেন।
এটি একটি দুঃখের বিষয় যে আমার বিলম্ব হয়েছে, এবং আমি এখন পর্যন্ত তাকে এই ধরনের একটি ইচ্ছা পূরণ করতে সাহায্য করে চলেছি, এটি আসলে কারণ তার অ্যালগরিদম সম্পর্কে সম্প্রতি লাফিয়ে লাফিয়ে উন্নতি হয়েছে৷
আমি একদিন একটি পাইন অনুবাদক লিখব পরিকল্পনা. সবই পাইথনিক। .
ঠিক আছে, আর কিছু না করে, আসুন এই কিংবদন্তি সুপার ট্রেন্ড লাইনটি চালু করি। .

2. সিস্টেম পরিচিতি

CMC মার্কেটস নতুন প্রজন্মের বুদ্ধিমান ট্রেডিং সিস্টেম - সুপার ট্রেন্ড লাইন (সুপারট্রেন্ড)
এখানে একটি নিবন্ধ এই সিস্টেম প্রবর্তন.
img

CMC মার্কেটে নতুন প্রজন্মের বুদ্ধিমান ট্রেডিং সিস্টেমে, আপনি প্রযুক্তিগত সূচকগুলিতে "সুপার ট্রেন্ড লাইন" নির্বাচন করে এটি ব্যবহার করতে পারেন।
চিত্রে দেখানো হিসাবে, আপনি আপনার নিজের পছন্দ অনুযায়ী ক্রমবর্ধমান সংকেত এবং পতনের সংকেতগুলির "রঙ এবং বেধ" সামঞ্জস্য করতে পারেন।
সুতরাং একটি সুপারট্রেন্ড নির্দেশক কি? সুপারট্রেন্ড নির্দেশক সূত্রটি বোঝার আগে, এটিআর বোঝা প্রয়োজন, কারণ সুপারট্রেন্ড নির্দেশকের মান গণনা করতে ATR মান ব্যবহার করে।

মূল অ্যালগরিদমগুলি পরিচয় করিয়ে দেওয়ার জন্য নীচে একটি ছবিও রয়েছে।
img

একটি মোটামুটি চেহারা নিলে, প্রধান বিবরণ হল HL2 এর চ্যানেল (কে-লাইন গড় মূল্য) n গুণ ATR দ্বারা গুণিত। একটি প্রবণতা ব্রেকআউট করুন.
তবে নিবন্ধটি তুলনামূলকভাবে সংক্ষিপ্তভাবে লেখা হয়েছে। কোন বিস্তারিত অ্যালগরিদম নেই. তারপর আমি ট্রেডিংভিউ, সবচেয়ে ভয়ঙ্কর সম্প্রদায়ের কথা ভেবেছিলাম।
আশানুরূপ। এটা সত্যিই আছে.
img

ছবি থেকে বিচার করলে, এটি ট্রেন্ডের সাথে বেশ সামঞ্জস্যপূর্ণ। কিন্তু দুর্ভাগ্যবশত এটি শুধুমাত্র একটি সতর্কতা অ্যালার্ম সংকেত।

3. সোর্স কোড শিখুন

কোড দেখে মনে হচ্ছে এটি খুব বেশি লম্বা নয়, তাই আসুন এটি অনুবাদ করে চেষ্টা করি। ! (っ•̀ω•́)っ✎⁾⁾!
img
সম্পূর্ণ পাইন কোড উপরের মত. .

4. কোড রূপান্তর

এখানে আমরা FMZ-এ একটি নতুন কৌশল তৈরি করি এবং এর নাম দিই SuperTrade
img

তারপরে আমরা ফ্যাক্টর এবং পিডি দুটি প্যারামিটার সেট করি
img

কোডের ক্রিয়াকলাপকে আরও সহজ করার জন্য এবং বোঝার সুবিধার্থে, পাইথনের উন্নত ডেটা সম্প্রসারণ প্যাকেজ ব্যবহার করা হয়।pandas

দুপুরের খাবারের সময়, আমি শিক্ষক মেংমেংকে জিজ্ঞাসা করলাম যে FMZ এই লাইব্রেরিটিকে সমর্থন করে কিনা। বিকেলে দেখলাম এটা আসলে ব্যবহারের জন্য প্রস্তুত।
শিক্ষক মেংমেং সত্যিই আশ্চর্যজনক।

1. আমাদের পান্ডাস লাইব্রেরি টাইম লাইব্রেরি আমদানি করতে হবে
2. প্রধান ফাংশনে ত্রৈমাসিক চুক্তি সেট আপ করুন (প্রধানত OKEX চলমান)
3. প্রতি 15 মিনিটে একবার সনাক্ত করতে একটি লুপ doTicker() সেট করুন।
15 মিনিটের সাইকেলে কোডটি চালান
তারপর আমরা doTicker() এ মূল কৌশল লিখি।

import pandas as pd import time def main(): exchange.SetContractType("quarter") preTime = 0 Log(exchange.GetAccount()) while True: records = exchange.GetRecords(PERIOD_M15) if records and records[-2].Time > preTime: preTime = records[-2].Time doTicker(records[:-1]) Sleep(1000 *60)

4. আমরা k লাইনের OHCLV পুনরুদ্ধার করতে চাই, তাই GetRecords() ব্যবহার করুন
5. আমরা পুনরুদ্ধার করা ডেটা পান্ডাস M15 = pd.DataFrame(রেকর্ড) এ আমদানি করি
6. আমরা টেবিলের হেডার ট্যাগ পরিবর্তন করতে চাই। M15.columns =['time','open','high','low','close','volume','OpenInterest']
আসলে, এটি হল 'ওপেন', 'হাই', 'লো' এবং 'ক্লোজ'-এর প্রথম অক্ষরগুলিকে ছোট হাতের অক্ষরে পরিবর্তন করা, যাতে বড় হাতের এবং ছোট হাতের অক্ষর ছাড়াই পরবর্তীতে কোড লেখা সহজ হয়।

def doTicker(records): M15 = pd.DataFrame(records) M15.columns = ['time','open','high','low','close','volume','OpenInterest']

7. ডেটা সেট hl2=(উচ্চ+নিম্ন)/2-এ একটি কলাম hl2 যোগ করুন

#HL2 M15['hl2']=(M15['high']+M15['low'])/2

৮. এরপর, ATR গণনা করা যাক
যেহেতু ATR গণনার জন্য একটি পরিবর্তনশীল দৈর্ঘ্যের প্রবর্তন প্রয়োজন, এর মান হল Pd

তারপরে আমরা মাই ল্যাঙ্গুয়েজ ম্যানুয়াল এবং গড় ATR সত্যিকারের ওঠানামা প্রশস্ততার জন্য অ্যালগরিদম ধাপগুলি নিম্নরূপ:
TR : MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR : RMA(TR,N)

নিম্নলিখিত তিনটি পার্থক্যের মধ্যে TR-এর মান সবচেয়ে বড়।

  1. বর্তমান ট্রেডিং দিনের সর্বোচ্চ মূল্য এবং সর্বনিম্ন মূল্যের মধ্যে অস্থিরতা HIGH-LOW
  2. আগের ট্রেডিং দিনের ক্লোজিং প্রাইস এবং বর্তমান ট্রেডিং ডে এর সর্বোচ্চ দামের মধ্যে অস্থিরতা REF(CLOSE,1)-HIGH)
  3. আগের ট্রেডিং দিনের সমাপ্তি মূল্য এবং বর্তমান ট্রেডিং দিনের সর্বনিম্ন মূল্যের মধ্যে অস্থিরতা REF(CLOSE,1)-LOW)
    তাই TR: MAX(MAX((High-low), ABS(REF(CLOSE,1)-HIGH)), ABS(REF(CLOSE,1)-LOW));

পাইথন গণনায়

M15['prev_close']=M15['close'].shift(1)

পূর্ববর্তী সারিতে ক্লোজ-এর ডেটা পেতে আপনাকে প্রথমে একটি prev_close সেট আপ করতে হবে, অর্থাৎ, একটি নতুন প্যারামিটার তৈরি করতে 1 স্পেস দিয়ে ডানদিকে সরান।

ranges= [M15['high'] - M15['low'],M15['high']-M15['prev_close'],M15['low']-M15['prev_close']]

তারপর TR-এর তিনটি তুলনামূলক মানের অ্যারে রেকর্ড করতে একটি মধ্যবর্তী ভেরিয়েবল সংজ্ঞায়িত করুন। (HIGH-LOW) (high-prev_close) (low-prev_close)

M15['tr'] = pd.DataFrame(ranges).T.abs().max(axis=1)

আমরা ডেটা সেটে TR নামে একটি নতুন কলাম সংজ্ঞায়িত করি TR এর মান হল abs() এবং max() ফাংশন ব্যবহার করে মধ্যবর্তী ভেরিয়েবলের সবচেয়ে বড় পরম মান।

alpha = (1.0 / length) if length > 0 else 0.5 M15['atr']=M15['tr'].ewm(alpha=alpha, min_periods=length).mean()

অবশেষে, আমাদের ATR, ATR: RMA(TR,N) এর মান গণনা করতে হবে, RMA অ্যালগরিদম আসলে EMA অ্যালগরিদমের একটি নির্দিষ্ট মান বৈকল্পিক।
N হল আমাদের আমদানি করা চলক, যেখানে ATR-এর জন্য ডিফল্ট প্যারামিটার হল 14। এখানে আমরা আলফা = দৈর্ঘ্যের পারস্পরিক আমদানি করি।

===

তারপর ema গণনা করতে ewm অ্যালগরিদম ব্যবহার করুন
সম্পূর্ণ ATR গণনা প্রক্রিয়া নিম্নরূপ

#ATR(PD) length=Pd M15['prev_close']=M15['close'].shift(1) ranges= [M15['high'] - M15['low'],M15['high']-M15['prev_close'],M15['low']-M15['prev_close']] M15['tr'] = pd.DataFrame(ranges).T.abs().max(axis=1) alpha = (1.0 / length) if length > 0 else 0.5 M15['atr']=M15['tr'].ewm(alpha=alpha, min_periods=length).mean()

9 আপ এবং ডিএন গণনা করা শুরু করুন

M15['Up']=M15['hl2']-(Factor*M15['atr']) M15['Dn']=M15['hl2']+(Factor*M15['atr'])

Up=hl2 -(Factor * atr)
Dn=hl2 +(Factor * atr)
এটা খুব সহজ না?

নিম্নলিখিতটি টিভিতে 15-21 লাইনের মূল কোড সেগমেন্ট

TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1) Tsl = Trend==1? TrendUp: TrendDown linecolor = Trend == 1 ? green : red

এই অনুচ্ছেদের মূল অর্থ প্রকাশ করা,
যদি বুলিশ পর্যায়ে, (নিম্ন লাইন) TrendUp = max(Up,TrendUp)[1])
যদি এটি নিম্নমুখী পর্যায়ে থাকে, (উপরের লাইন) TrendDown=min(Dn,TrendDown)[1])
অন্য কথায়, একটি প্রবণতায়, ATR-এর মান ব্যানডিট বলিঙ্গার কৌশলের অনুরূপ একটি কৌশল ব্যবহার করছে।
চ্যানেলের অন্য পাশ সরু করতে থাকুন

এখানে, TrendUp এবং TrendDown এর প্রতিটি গণনা স্ব-পুনরাবৃত্তি করা প্রয়োজন।
অর্থাৎ, প্রতিটি ধাপ পূর্ববর্তী ধাপের উপর ভিত্তি করে গণনা করতে হবে।
তাই আমাদের ডেটা সংগ্রহের মাধ্যমে লুপ করতে হবে।

এখানে প্রথমে আমাদের ডেটা সংগ্রহে TrendUp, TrendDown, Trend এবং linecolor-এর নতুন ক্ষেত্র তৈরি করতে হবে। এবং তাদের একটি প্রাথমিক মান দিন
তারপর ফিলনা(0) সিনট্যাক্স ব্যবহার করে 0 দিয়ে পূর্বে গণনা করা ফলাফলে শূন্য মান সহ ডেটা পূরণ করুন

M15['TrendUp']=0.0 M15['TrendDown']=0.0 M15['Trend']=1 M15['Tsl']=0.0 M15['linecolor']='Homily' M15 = M15.fillna(0)

একটি লুপের জন্য সক্রিয় করুন
একটি লুপে পাইথন টারনারি অপারেশন ব্যবহার করা

for x in range(len(M15)):

TrendUp গণনা করুন
TrendUp = MAX(Up,TrendUp[-1]) if close[-1]>TrendUp[-1] else Up
সাধারণ অর্থ হল যদি পূর্ববর্তী ক্লোজ > পূর্ববর্তী TrendUp, যদি এটি সত্য হয়, তাহলে Up এবং পূর্ববর্তী TrendUp-এর মধ্যে সর্বাধিক মান নিন যদি এটি সত্য না হয়, তাহলে Up মানটি নিন এবং এটিকে বর্তমান TrendUp-এ পাস করুন।

M15['TrendUp'].values[x] = max(M15['Up'].values[x],M15['TrendUp'].values[x-1]) if (M15['close'].values[x-1]>M15['TrendUp'].values[x-1]) else M15['Up'].values[x]

একইভাবে, TrendDown গণনা করুন
TrendDown=min(Dn,TrendDown[-1]) if close[-1]<TrendDown[-1] else Dn
সাধারণ অর্থ হল যদি পূর্ববর্তী বন্ধ < পূর্ববর্তী TrendDown, যদি এটি সত্য হয়, Dn এবং পূর্ববর্তী TrendDown এর মধ্যে ক্ষুদ্রতম মান নিন যদি এটি সত্য না হয় তবে Dn মানটি নিন এবং এটিকে বর্তমান ট্রেন্ডডাউনে পাস করুন।

M15['TrendDown'].values[x] = min(M15['Dn'].values[x],M15['TrendDown'].values[x-1]) if (M15['close'].values[x-1]<M15['TrendDown'].values[x-1]) else M15['Dn'].values[x]

আমি ছদ্ম কোড সরলীকৃত নিয়ন্ত্রণ দিক গণনা জন্য পতাকা.
Trend= 1 if (close > TrendDown[-1]) else (x)
x = -1 if (close< TrendUp[-1]) else Trend[-1]

এর অর্থ হল যদি ক্লোজিং প্রাইস > আগের ট্রেন্ডডাউন হয়, তাহলে 1 (বুলিশ) নিন।
যদি ক্লোজিং প্রাইস < আগের TrendUp, তাহলে নিন -1 (সংক্ষিপ্ত) যদি এটি সত্য না হয়, তাহলে আগের ট্রেন্ডটি নিন (অর্থাৎ এটি অপরিবর্তিত থাকে)।
গ্রাফিক ভাষায় অনুবাদ করা হয়েছে, এর অর্থ হল যদি উপরের ট্র্যাকটি অতিক্রম করা হয়, তাহলে পতাকাটি বুলিশে রূপান্তরিত হবে, এবং যদি নীচের ট্র্যাকটি অতিক্রম করা হয়, তাহলে পতাকাটি অন্য সময় অপরিবর্তিত থাকবে।

M15['Tsl'].values[x] = M15['TrendUp'].values[x] if (M15['Trend'].values[x]==1) else M15['TrendDown'].values[x]

টিএসএল এবং লাইনকালার গণনা করুন
Tsl= rendUp if (Trend==1) else TrendDown
Tsl চিত্রে সুপারট্রেন্ড মান উপস্থাপন করতে ব্যবহৃত হয়। এর মানে হল আপনি যখন বুলিশ হন, আপনি চার্টে নিচের ট্র্যাকটিকে চিহ্নিত করেন এবং যখন আপনি বিয়ারিশ হন, আপনি চার্টে উপরের ট্র্যাকটিকে চিহ্নিত করেন।
linecolor= 'green' if (Trend==1) else 'red'
লাইনকালারের অর্থ হল আপনি যদি লম্বা হন তবে সবুজ লাইন চিহ্নিত করুন, যদি আপনি ছোট হন তবে খালি রঙ চিহ্নিত করুন (প্রধানত ট্রেডিংভিউ প্রদর্শনের জন্য ব্যবহৃত হয়)

M15['Tsl'].values[x] = M15['TrendUp'].values[x] if (M15['Trend'].values[x]==1) else M15['TrendDown'].values[x] M15['linecolor'].values[x]= 'green' if ( M15['Trend'].values[x]==1) else 'red'

কোডের পরবর্তী 23-30 লাইনগুলি মূলত প্লট অঙ্কন, যা এখানে বিস্তারিতভাবে ব্যাখ্যা করা হবে না।

অবশেষে, সংকেত নিয়ন্ত্রণ ক্রয় এবং বিক্রয়ের জন্য কোডের 2 লাইন রয়েছে
ট্রেডিংভিউতে, এর অর্থ হল পতাকা উল্টানোর পর একটি সংকেত দেওয়া।
শর্তসাপেক্ষ বিবৃতিগুলিকে পাইথনে রূপান্তর করুন।
যদি পূর্ববর্তী ট্রেন্ড পতাকা -১ থেকে ১ এ পরিবর্তিত হয়, তাহলে এর অর্থ হল উপরের প্রতিরোধ ভেঙে গেছে। দীর্ঘ সময় ধরে খোলা
যদি পূর্ববর্তী ট্রেন্ড ফ্ল্যাগ 1 থেকে -1 তে পরিবর্তিত হয়, তাহলে এর অর্থ একটি অগ্রগতি এবং সমর্থন জারি করা হয়েছে এবং একটি সংক্ষিপ্ত অবস্থান খোলা হয়েছে।

if(M15['Trend'].values[-1] == 1 and M15['Trend'].values[-2] == -1): Log('SuperTrend V.1 Alert Long',"Create Order Buy) if(M15['Trend'].values[-1] == -1 and M15['Trend'].values[-2] == 1): Log('SuperTrend V.1 Alert Long',"Create Order Sell)

এই বিভাগের জন্য সম্পূর্ণ কোড নিম্নরূপ:

M15['TrendUp']=0.0 M15['TrendDown']=0.0 M15['Trend']=1 M15['Tsl']=0.0 M15['linecolor']='Homily' M15 = M15.fillna(0) for x in range(len(M15)): M15['TrendUp'].values[x] = max(M15['Up'].values[x],M15['TrendUp'].values[x-1]) if (M15['close'].values[x-1]>M15['TrendUp'].values[x-1]) else M15['Up'].values[x] M15['TrendDown'].values[x] = min(M15['Dn'].values[x],M15['TrendDown'].values[x-1]) if (M15['close'].values[x-1]<M15['TrendDown'].values[x-1]) else M15['Dn'].values[x] M15['Trend'].values[x] = 1 if (M15['close'].values[x] > M15['TrendDown'].values[x-1]) else ( -1 if (M15['close'].values[x]< M15['TrendUp'].values[x-1])else M15['Trend'].values[x-1] ) M15['Tsl'].values[x] = M15['TrendUp'].values[x] if (M15['Trend'].values[x]==1) else M15['TrendDown'].values[x] M15['linecolor'].values[x]= 'green' if ( M15['Trend'].values[x]==1) else 'red' if(M15['Trend'].values[-1] == 1 and M15['Trend'].values[-2] == -1): Log('SuperTrend V.1 Alert Long',"Create Order Buy) Log('Tsl=',Tsl) if(M15['Trend'].values[-1] == -1 and M15['Trend'].values[-2] == 1): Log('SuperTrend V.1 Alert Long',"Create Order Sell) Log('Tsl=',Tsl)

img

img

5. সমস্ত কোড

আমি সামগ্রিক কোড কাঠামো সামঞ্জস্য করেছি।
এবং কৌশলের সাথে দীর্ঘ এবং সংক্ষিপ্ত সম্পর্কিত অর্ডার নির্দেশাবলী একত্রিত করুন।
নীচে সম্পূর্ণ কোড আছে

'''backtest start: 2019-05-01 00:00:00 end: 2020-04-21 00:00:00 period: 15m exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"}] ''' import pandas as pd import time def main(): exchange.SetContractType("quarter") preTime = 0 Log(exchange.GetAccount()) while True: records = exchange.GetRecords(PERIOD_M15) if records and records[-2].Time > preTime: preTime = records[-2].Time doTicker(records[:-1]) Sleep(1000 *60) def doTicker(records): #Log('onTick',exchange.GetTicker()) M15 = pd.DataFrame(records) #Factor=3 #Pd=7 M15.columns = ['time','open','high','low','close','volume','OpenInterest'] #HL2 M15['hl2']=(M15['high']+M15['low'])/2 #ATR(PD) length=Pd M15['prev_close']=M15['close'].shift(1) ranges= [M15['high'] - M15['low'],M15['high']-M15['prev_close'],M15['low']-M15['prev_close']] M15['tr'] = pd.DataFrame(ranges).T.abs().max(axis=1) alpha = (1.0 / length) if length > 0 else 0.5 M15['atr']=M15['tr'].ewm(alpha=alpha, min_periods=length).mean() M15['Up']=M15['hl2']-(Factor*M15['atr']) M15['Dn']=M15['hl2']+(Factor*M15['atr']) M15['TrendUp']=0.0 M15['TrendDown']=0.0 M15['Trend']=1 M15['Tsl']=0.0 M15['linecolor']='Homily' M15 = M15.fillna(0) for x in range(len(M15)): M15['TrendUp'].values[x] = max(M15['Up'].values[x],M15['TrendUp'].values[x-1]) if (M15['close'].values[x-1]>M15['TrendUp'].values[x-1]) else M15['Up'].values[x] M15['TrendDown'].values[x] = min(M15['Dn'].values[x],M15['TrendDown'].values[x-1]) if (M15['close'].values[x-1]<M15['TrendDown'].values[x-1]) else M15['Dn'].values[x] M15['Trend'].values[x] = 1 if (M15['close'].values[x] > M15['TrendDown'].values[x-1]) else ( -1 if (M15['close'].values[x]< M15['TrendUp'].values[x-1])else M15['Trend'].values[x-1] ) M15['Tsl'].values[x] = M15['TrendUp'].values[x] if (M15['Trend'].values[x]==1) else M15['TrendDown'].values[x] M15['linecolor'].values[x]= 'Long' if ( M15['Trend'].values[x]==1) else 'Short' linecolor=M15['linecolor'].values[-2] close=M15['close'].values[-2] Tsl=M15['Tsl'].values[-2] if(M15['Trend'].values[-1] == 1 and M15['Trend'].values[-2] == -1): Log('SuperTrend V.1 Alert Long','Create Order Buy') Log('Tsl=',Tsl) position = exchange.GetPosition() if len(position) > 0: Amount=position[0]["Amount"] exchange.SetDirection("closesell") exchange.Buy(_C(exchange.GetTicker).Sell*1.01, Amount); exchange.SetDirection("buy") exchange.Buy(_C(exchange.GetTicker).Sell*1.01, vol); if(M15['Trend'].values[-1] == -1 and M15['Trend'].values[-2] == 1): Log('SuperTrend V.1 Alert Long','Create Order Sell') Log('Tsl=',Tsl) position = exchange.GetPosition() if len(position) > 0: Amount=position[0]["Amount"] exchange.SetDirection("closebuy") exchange.Sell(_C(exchange.GetTicker).Buy*0.99,Amount); exchange.SetDirection("sell") exchange.Sell(_C(exchange.GetTicker).Buy*0.99, vol*2);

পাবলিক কৌশল লিঙ্ক https://www.fmz.com/strategy/200625

6. ব্যাকটেস্টিং এবং সারাংশ

আমরা ব্যাকটেস্টিংয়ের জন্য গত বছরের ডেটা নির্বাচন করেছি।
15-মিনিট সময়ের সাথে OKEX ত্রৈমাসিক চুক্তি ব্যবহার করুন।
প্যারামিটার সেট হল,
Factor=3
Pd=45
vol=100 (প্রতি অর্ডার 100 টুকরা)
বার্ষিক রিটার্ন প্রায় 33%।
সাধারণভাবে বলতে গেলে, রিট্রেসমেন্ট খুব বড় নয়।
প্রধান কারণ হল যে 312 এর তীব্র ড্রপ সিস্টেমে তুলনামূলকভাবে বড় প্রভাব ফেলেছে।
যদি 312 না থাকে তবে আয় আরও ভাল হওয়া উচিত।

img

৬. চূড়ান্ত চিন্তাভাবনা

সুপারট্রেন্ড একটি খুব ভালো ট্রেডিং সিস্টেম

সুপারট্রেন্ড সিস্টেমের মূল নীতি হল ATR চ্যানেল ব্রেকআউট কৌশল গ্রহণ করা (কেন্ট চ্যানেলের অনুরূপ)
কিন্তু মূল পরিবর্তনটি দস্যু ব্রিনের সংকীর্ণ কৌশল বা বিপরীত ডনচিয়ান নীতির ব্যবহারের মধ্যে রয়েছে।
বাজার আন্দোলনের সময় ক্রমাগত উপরের এবং নীচের চ্যানেলগুলিকে সংকীর্ণ করুন।
চ্যানেল ব্রেকথ্রু এবং বাঁক অপারেশন অর্জন করার জন্য. (একবার চ্যানেলটি ভেঙে গেলে, উপরের এবং নীচের রেলগুলি তাদের প্রাথমিক মানগুলিতে ফিরে আসে)

আমি ট্রেডিংভিউতে আলাদাভাবে dn TrendUp TrendDn প্লট করেছি।
এটি আপনাকে এই কৌশলটি আরও ভালভাবে বুঝতে সাহায্য করবে

এক নজরে পরিষ্কার
img

এছাড়াও, গিথুবে একটি জেএস সংস্করণ রয়েছে। আমি js সম্পর্কে অনেক কিছু জানি না, তবে মনে হচ্ছে if স্টেটমেন্ট থেকে এতে কিছু ভুল আছে।
ঠিকানা হলhttps://github.com/Dodo33/gekko-supertrend-strategy/blob/master/Supertrend.js

অবশেষে আমি মূল ট্র্যাক ডাউন.
এটি 2013.05.29 তারিখে প্রকাশিত হয়েছিল
লিখেছেন রাজন্দ্রন আর
Mt4 ফোরামে প্রকাশিত C++ কোডhttps://www.mql5.com/en/code/viewcode/10851/128437/Non_Repainting_SuperTrend.mq4
আমি মোটামুটিভাবে C++ এর অর্থ বুঝি, এবং সুযোগ পেলে আমি এটি পুনরায় লিখব।

আশা করি সবাই এর থেকে সারমর্ম শিখতে পারবেন।
করা কঠিন। ~!

Related Recommendations
Comment
All comments (25)

    YYDS!

    5 years ago

    如果直接使用这个策略在OK交易所交易需要怎么连接交易所,小白一个不会python,看不明白

    6 years ago

    这里如果312那波行情没吃到的话应该参数还有很大的调整空间,因为supertrend主要就是抓趋势单,312是不应该错过的。另外期待lz的pine翻译器早日问世

    6 years ago

    可惜各种周期和参数,回测效果都不怎么好, 不知道其它人怎么优化的?

    6 years ago

    可以了,弄好了,感谢您的付出

    6 years ago

    用不了呢,显示这个:Traceback (most recent call last): File "<string>", line 1473, in Run File "<string>", line 8, in <module> ImportError: No module named pandas

    6 years ago

    意思是缺少pandas包 你的系统可能需要pip install pandas

    6 years ago

    请问这是怎么处理的呢?万分感谢

    6 years ago

    pine的翻译器,期待

    6 years ago

    没啥文化只能说一声 牛逼!

    6 years ago

    “估摸着某一天写一个pine的翻译器。一切皆可python。”—— 牛,好些人看好这个!

    6 years ago

    啊哈哈,谢谢老板

    6 years ago

    期待期待,pine真的看不太懂,教程也很少

    6 years ago

    回测引擎的代码是否可以开源呢,我想实现复现一下 然后用svm找出最好的参数

    6 years ago

    这个系统好像也曾经是收益率前十的期货策略。长期坚持做下去是能赚钱的。

    6 years ago

    恩啊。学习精髓。

    6 years ago

    你好,请教下,PD就是 ATR的长度值吧? 比如 ATR(14) ,就是 PD赋值14了吧?

    6 years ago

    是的,完全正确

    6 years ago

    好的,谢谢!!!
    顺手mq4也收走了,谢谢。。 o(∩_∩)o

    6 years ago

    感谢梦梦老师哈

    6 years ago

    碰巧我也写了个JS版本的。

    6 years ago

    求JS版!

    6 years ago

    一会儿,公开。

    6 years ago

    赞的,!

    6 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)