یہ بٹ کوائن اور ایتھریم جیسی کریپٹو کرنسیوں کے لئے ایک آسان تکنیکی اشارے پر مبنی خودکار طویل رجحان کی حکمت عملی ہے ، جس کا مقصد بڑے اپ ٹرینڈز کو پکڑنا اور کثرت سے تجارت سے تجارتی فیس کے نقصانات کو کم کرنا ہے۔
رجحان کی سمت کا تعین کرنے کے لئے MACD کا استعمال کریں، جب MACD اوپر کی طرف بڑھتا ہے تو طویل؛
20 پیریڈ EMA، 100 پیریڈ SMA اور 200 پیریڈ SMA کا حساب لگائیں، جب EMA اور SMA ایک ساتھ اوپر کی طرف اشارہ کرتے ہیں تو طویل عرصے تک جائیں؛
خریدیں جب EMA SMA سے زیادہ ہو اور SMA سست SMA سے زیادہ ہو؛
سٹاپ نقصان لائن مقرر کریں، جب قیمت ٹوٹ جاتی ہے تو سٹاپ نقصان کو روکیں.
بند پوزیشن جب قیمت گرتی ہے اور EMA SMA سے نیچے گزر جاتا ہے۔
اس حکمت عملی میں متعدد اشارے شامل ہیں تاکہ رجحان اور انٹری ٹائمنگ کا تعین کیا جاسکے تاکہ بڑے اپ ٹرینڈز سے فائدہ اٹھایا جاسکے۔
متعدد اشارے کا مجموعہ غلط بریک آؤٹ اور غلط سگنل کو فلٹر کرنے میں مدد کرسکتا ہے۔
صرف واضح رجحانات میں داخل ہونے سے غیر ضروری تجارت کو کم کیا جاسکتا ہے اور تجارتی تعدد کو کم کیا جاسکتا ہے۔
سٹاپ نقصان مؤثر طریقے سے فی تجارت زیادہ سے زیادہ نقصان کو محدود کر سکتا ہے.
بیک ٹسٹ میں بی ٹی سی اور ای ٹی ایچ میں مناسب منافع دکھایا گیا ہے۔
سادہ اور واضح منطق، سمجھنے اور لاگو کرنے میں آسان، beginners کے لئے اچھا ہے.
اصلاح کے لئے زیادہ اشارے شامل کرنے کے لئے اعلی توسیع.
مارکیٹ کی بے ترتیبیت، غلط فیصلے کا خطرہ
واحد پوزیشن نقطہ نظر منظم خطرات کو ہیج نہیں کر سکتا.
غلط سٹاپ نقصان کی ترتیب overstoploss کا سبب بن سکتی ہے.
بیک ٹیسٹ زندہ نتائج کی نمائندگی نہیں کرتا، اصل کارکردگی ابھی تک توثیق نہیں کی گئی ہے۔
ٹریڈنگ لاگت کے اثرات پر غور نہیں کیا جاتا، براہ راست کارکردگی سے مختلف ہو سکتا ہے.
پروڈکٹ کی خصوصیات پر غور نہیں کیا، پیرامیٹر ٹوننگ کی ضرورت ہے.
اشارے کے پیرامیٹرز کو بہتر بنانے کے لیے مختلف پیرامیٹرز کے مجموعوں کا تجربہ کریں۔
داخلہ سگنل فلٹر کرنے کے لئے KDJ کی طرح فلٹرز شامل کریں.
سٹاپ نقصان کی حکمت عملی کو بہتر بنائیں، جیسے متحرک سٹاپ نقصان شامل کرنا.
اکاؤنٹ کے سائز پر مبنی پوزیشن سائزنگ پر غور کریں۔
مصنوعات کی خصوصیات کو ممتاز کریں، اس کے مطابق پیرامیٹرز کو ایڈجسٹ کریں.
تجزیہ کے لیے مزید ٹائم فریم شامل کریں۔
مختلف مصنوعات آزمائیں اور ان میں سے بہترین تلاش کریں۔
حکمت عملی کا منطق آسان اور واضح ہے۔ متعدد اشارے کا استعمال غلط سگنلز کو مؤثر طریقے سے فلٹر کرنے میں مدد کرسکتا ہے۔ لیکن اصل اطلاق سے پہلے ، براہ راست تجارتی تصدیق کے ساتھ ، پیرامیٹرز ، رسک کنٹرول وغیرہ پر مزید اصلاح کی ضرورت ہے۔ مناسب توسیع کے ساتھ ، یہ حکمت عملی کے بعد ایک بہت ہی عملی کرپٹو ٹرینڈ بن سکتا ہے۔
/*backtest start: 2023-09-06 00:00:00 end: 2023-10-06 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="BTC Long strategy", overlay=true, max_bars_back=3000, initial_capital=1000, commission_value=0.075) //////////// !!!!!!!!!!!!!!!! WORK BEST IN 2 HOURS for BTC, ETH and ETHXBT !!!!!!!!!!!!!!!!!!! ///////////////////// [macdLine, macdSignalLine, macdHist] = macd(close, 12, 26, 7) //_rsi_len = input(14, title="RSI length") _rsi_len = 14 NewValue = 0 PreviousValue = 0 leverage = 1 smaPercentageIncrease = 0.0 SMA_PERCENT_INCREASE = 0.0 float atrValue = 0 bool bPositionOpened = false float stockPositionSize = 0 float volatilityPercentage = 0.0 bool bDisplayArrow = false bool bEMAIsRising = false bool bSMAIsRising = false bool bSMASlowIsRising = false bool bMACDIsRising = false bool bMACDHistIsRising = false bool bMACDSignalIsRising = false float stopLoss = input (1.5, "StopLoss in %", type=input.float) //StopLoss associated with the order //positionSize = input (1000, "in $") float positionSize = 1000 float currentPrice = close float stopLossPrice = 0 float entryPrice = 0 //----------------------------------------------------------- // === INPUT BACKTEST RANGE ONE YEAR //FromDay = input(defval = 01, title = "From Day", minval = 1, maxval = 31) //FromMonth = input(defval = 01, title = "From Month", minval = 1, maxval = 12) //FromYear = input(defval = 2020, title = "From Year", minval = 2017) FromDay = 01 FromMonth = 01 FromYear = 2019 //ToDay = input(defval = 01, title = "To Day", minval = 1, maxval = 31) //ToMonth = input(defval = 01, title = "To Month", minval = 1, maxval = 12) //ToYear = input(defval = 2023, title = "To Year", minval = 2017) ToDay = 31 ToMonth = 12 ToYear = 2099 // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" //emaLength = input(20, "EMA Length") //smaLength = input(100, "SMA Length") //smaSlowLength = input(200, "SMA Length") emaLength = 20 smaLength = 100 smaSlowLength = 200 ema = ema(close, emaLength) sma = sma(close, smaLength) smaSlow = sma(close, smaSlowLength) plot(sma, color=color.green) plot(smaSlow, color=color.orange) plot(ema, color=color.yellow) //reload previous values stopLossPrice := na(stopLossPrice[1]) ? 0.0 : stopLossPrice[1] entryPrice := na(entryPrice[1]) ? 0.0 : entryPrice[1] bPositionOpened := na(bPositionOpened[1]) ? false : bPositionOpened[1] positionSize := na(positionSize[1]) ? 50000 : positionSize[1] stockPositionSize := na(stockPositionSize[1]) ? 0 : stockPositionSize[1] //leverage := na(leverage[1]) ? 1 : leverage[1] //ReEvaluate the direction of indicators bEMAIsRising := rising(ema, 2) bSMAIsRising := rising(sma, 3) bMACDIsRising := rising(macdLine, 3) bMACDHistIsRising := rising(macdHist, 1) bSMASlowIsRising := rising(smaSlow, 10) bMACDSignalIsRising := rising(macdSignalLine, 3) atrValue := atr(14) volatilityPercentage := (atrValue/currentPrice)*100 //calcute the volatility. Percentage of the actual price //There is too many signal in tranding market, to avoid this we need to make sure that the smaSlow has a mininal increase //THIS DOES NOT WORK AT ALL!!!!! //if bSMASlowIsRising == true // //calculate the percentegage difference over the last 10 bars // smaPercentageIncrease := ((smaSlow[0]/sma[10])-1)*100 // if smaPercentageIncrease < SMA_PERCENT_INCREASE // //Not enough increase we reset the flag // bSMASlowIsRising := false if (window()) //Check if we can open a LONG //sma > smaSlow and if ( volatilityPercentage < 2 and bPositionOpened == false and bSMASlowIsRising == true and bMACDIsRising == true and bEMAIsRising == true and bSMAIsRising == true and ema[0] > sma[0] and sma[0] < currentPrice) // add comparaison between macd and macd signal line //if (bPositionOpened == false and macdSignalLine < macdLine and bMACDIsRising == true and bMACDHistIsRising == true and bEMAIsRising == true and bSMAIsRising == true and ema[1] > sma[1] and sma[1] < currentPrice) //Enter in short position stockPositionSize := (positionSize*leverage)/currentPrice //Calculate the position size based on the actual price and the position Size (in $) configured. //calculate exit values stopLossPrice := currentPrice*(1-stopLoss/100) strategy.entry("myPosition", strategy.long, qty=stockPositionSize, comment="BUY at " + tostring(currentPrice)) entryPrice := currentPrice //store the entry price bPositionOpened := true bDisplayArrow := true //if (bPositionOpened == true and (currentPrice <= stopLossPrice or crossunder(ema[1], sma[1]) or currentPrice < sma[1])) if (bPositionOpened == true and (currentPrice <= stopLossPrice or crossunder(ema[1], sma[1]))) strategy.close("myPosition", comment="" + tostring(currentPrice) ) //Stop //uncomment the below line to make the bot investing the full portfolio amount to test compounding effect. //positionSize := positionSize + ((stockPositionSize * currentPrice) - (positionSize*leverage)) //reset some flags bPositionOpened := false bDisplayArrow := true entryPrice := 0.0