
یہ حکمت عملی چلتی اوسط کے کراس اصول پر مبنی ہے ، جب قلیل مدتی اوسط نیچے سے طویل مدتی اوسط سے گزرتا ہے تو زیادہ ہوتا ہے ، جب قلیل مدتی اوسط اوپر سے نیچے سے طویل مدتی اوسط سے گزرتا ہے تو خالی ہوتا ہے ، یہ ایک عام رجحان کی پیروی کرنے والی حکمت عملی ہے۔
یہ حکمت عملی بنیادی طور پر دو مختصر اور طویل مدتی سادہ منتقل اوسطوں کا حساب لگانے اور ان کی کراسنگ کی بنیاد پر رجحانات کی سمت کا فیصلہ کرتی ہے۔
خاص طور پر، حکمت عملی مختصر مدت کی اوسط لمبائی xMA اور طویل مدت کی اوسط لمبائی، مختصر مدت کی اوسط لمبائی Len اور طویل مدت کی اوسط لمبائی 2 کے حساب سے شروع ہوتی ہے.*Len。
اس کے بعد حکمت عملی یہ فیصلہ کرتی ہے کہ آیا قلیل مدتی اوسط طویل مدتی اوسط سے ٹکرا جاتا ہے ، اور اگر ایسا ہوتا ہے تو اس سے زیادہ سگنل پیدا ہوتا ہے۔ یہ فیصلہ کرنا کہ آیا قلیل مدتی اوسط طویل مدتی اوسط سے ٹکرا جاتا ہے یا نہیں ، اور اگر ایسا ہوتا ہے تو اس سے خالی سگنل پیدا ہوتا ہے۔
زیادہ کرنے کا اشارہ موصول ہونے کے بعد ، اگر اس وقت کوئی پوزیشن نہیں ہے تو ، مارکیٹ کی قیمت پر زیادہ پوزیشن کھولیں۔ کم کرنے کا اشارہ موصول ہونے کے بعد ، اگر اس وقت کوئی پوزیشن نہیں ہے تو ، مارکیٹ کی قیمت پر خالی پوزیشن کھولیں۔
اس کے علاوہ ، حکمت عملی میں ایک اسٹاپ نقصان کی روک تھام کا نقطہ بھی شامل ہے۔ زیادہ کرنے کے بعد اسٹاپ نقصان کی قیمت کو داخلہ قیمت - اسٹاپ نقصان کی فیصد کے طور پر ترتیب دیں*داخلہ کی قیمت، اسٹاپ قیمت داخلہ کی قیمت + اسٹاپ قیمت فی صد*داخلہ قیمت؛ اسٹاپ نقصان کے بعد اسٹاپ نقصان کی قیمت کو داخلہ قیمت + اسٹاپ نقصان کی فیصد پر سیٹ کریں*داخلہ کی قیمت، اسٹاپ قیمت داخلہ کی قیمت ہے - اسٹاپ قیمت فی صد*داخلے کی قیمت
آخر میں ، حکمت عملی رجحانات کا اندازہ لگانے میں مدد کے لئے یکساں لکیروں کی ایک بصری منحنی خطوط بھی تیار کرتی ہے۔
اس کے علاوہ ، اس میں یہ بھی کہا گیا ہے کہ اس میں بہت سے نئے لوگوں کو شامل کیا گیا ہے جنھوں نے اس میں حصہ لیا ہے۔
مارکیٹ کے رجحانات کو مؤثر طریقے سے ٹریک کرنے کے لئے ایک حرکت پذیر اوسط کی بنیاد پر رجحان کی سمت کا تعین کرنے کے لئے؛
خطرے پر قابو پانے کے لئے نقصان کو روکنے کے لئے روکنے کا نقطہ مقرر کریں.
ایکویریم منحنی خطوط کو بصری طور پر دکھائیں اور رجحان کی تبدیلیوں کو بصری طور پر ظاہر کریں۔
اوسط لائن پیچھے رہ جاتی ہے ، جس سے بہترین انٹری ٹائم سے محروم ہونے کا خطرہ ہوتا ہے۔
غیر معقول طور پر اسٹاپ نقصانات کی ترتیب سے اسٹاپ نقصانات کو بہت زیادہ نرمی یا سختی کا سامنا کرنا پڑ سکتا ہے۔
اسٹاک کی قیمتوں میں شدید اتار چڑھاو کے دوران ، اوسط لائن میں غلط سگنل پیدا ہونے کا امکان۔
صرف اوسط لکیری دورانیہ پیرامیٹرز کی بنیاد پر پیرامیٹرز کی اصلاح ، ممکنہ طور پر زیادہ فٹ ہونے کا سبب بن سکتا ہے۔
ان خطرات کو کم کرنے کے لئے مناسب طور پر نرمی سے روکنے کے لئے، متوازن مدت کے پیرامیٹرز کے مجموعہ کو بہتر بنانے اور دیگر اشارے کے فلٹرنگ کو شامل کرنے کے لئے.
دیگر اشارے فلٹر کرنے کے لئے شامل کریں ، جیسے MACD ، KDJ ، وغیرہ ، تاکہ غلط سگنل سے بچنے کے لئے یکساں لائن کی خرابی سے بچ سکے۔
مختصر مدت کی اوسط لائن اور طویل مدتی اوسط لائن کی لمبائی کے لئے کثیر مجموعہ کی اصلاح ، بہترین پیرامیٹرز کا مجموعہ تلاش کرنا؛
مختلف سٹاپ نقصان کی روک تھام کی حکمت عملیوں کی جانچ کرنا، جیسے لفظی سٹاپ، متحرک سٹاپ وغیرہ۔
پوزیشن مینجمنٹ ماڈیول شامل کریں ، فنڈز کے استعمال کی کارکردگی کو بہتر بنائیں
اس حکمت عملی کا مجموعی نظریہ واضح اور جامع ہے ، جس کی بنیاد پر مساوی لائن کراسنگ کا فیصلہ کیا جاتا ہے۔ اس رجحان کی سمت کو مؤثر طریقے سے ٹریک کیا جاسکتا ہے ، اور اس کا خطرہ کنٹرول کیا جاسکتا ہے ، جو ابتدائی سیکھنے کے لئے موزوں ہے۔ لیکن صرف مساوی لائن پر انحصار کرنے سے غلط سگنل ہوسکتے ہیں ، اصلاح کی گنجائش بہت زیادہ ہے ، بہت سے پہلوؤں سے اصلاحی بہتری لائی جاسکتی ہے ، تاکہ حکمت عملی کو زیادہ مستحکم اور قابل اعتماد بنایا جاسکے۔
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
//@strategy_alert_message {{strategy.order.alert_message}}
////////////////////////////////////////////////////////////
// Copyright by HPotter v2.0 19/09/2023
// MA Crossover Bot for OKX Exchange
////////////////////////////////////////////////////////////
var ALERTGRP_CRED = "entry"
signalToken = input("", "Signal Token", inline = "11", group = ALERTGRP_CRED)
OrderType = input.string("market", "Order Type", options = ["market", "limit"], inline = "21", group = ALERTGRP_CRED)
OrderPriceOffset = input.float(0, "Order Price Offset", minval = 0, maxval = 100, step = 0.01, inline = "21", group = ALERTGRP_CRED)
InvestmentType = input.string("percentage_balance", "Investment Type", options = ["margin", "contract", "percentage_balance", "percentage_investment"], inline = "31", group = ALERTGRP_CRED)
Amount = input.float(100, "Amount", minval = 0.01, inline = "31", group = ALERTGRP_CRED)
getAlertMsg(action, instrument, signalToken, orderType, orderPriceOffset, investmentType, amount) =>
str = '{'
str := str + '"action": "' + action + '", '
str := str + '"instrument": "' + instrument + '", '
str := str + '"signalToken": "' + signalToken + '", '
//str := str + '"timestamp": "' + str.format_time(timenow, "yyyy-MM-dd'T'HH:mm:ssZ", "UTC+0") + '", '
str := str + '"timestamp": "' + '{{timenow}}' + '", '
str := str + '"orderType": "' + orderType + '", '
str := str + '"orderPriceOffset": "' + str.tostring(orderPriceOffset) + '", '
str := str + '"investmentType": "' + investmentType + '", '
str := str + '"amount": "' + str.tostring(amount) + '"'
str := str + '}'
str
getOrderAlertMsgExit(action, instrument, signalToken) =>
str = '{'
str := str + '"action": "' + action + '", '
str := str + '"instrument": "' + instrument + '", '
str := str + '"signalToken": "' + signalToken + '", '
str := str + '"timestamp": "' + '{{timenow}}' + '", '
str := str + '}'
str
strategy(title='OKX: MA Crossover', overlay=true)
Len = input(13)
Profit = input.float(7, title='Take Profit %', minval=0.01) / 100
Stop = input.float(7, title='Stop Loss %', minval=0.01) / 100
xMA = ta.sma(close, Len)
//Robot State
isLong = strategy.position_size > 0
isShort = strategy.position_size < 0
isFlat = strategy.position_size == 0
//Current Signal
doLong = low < xMA[1] ? true : false
doShort = high > xMA[1] ? true: false
//Backtest Start Date
tm = timestamp(2022, 01, 01, 09, 30)
//Entry and exit orders
if doLong[2] == false and isLong == false and doLong and time > tm
strategy.cancel_all()
buyAlertMsgExit = getOrderAlertMsgExit(action = 'EXIT_LONG', instrument = syminfo.ticker, signalToken = signalToken)
buyAlertMsg = getAlertMsg(action = 'ENTER_LONG', instrument = syminfo.ticker, signalToken = signalToken, orderType = OrderType, orderPriceOffset = OrderPriceOffset, investmentType = InvestmentType, amount = Amount)
strategy.entry('Long', strategy.long, limit = close, comment='Long', alert_message =buyAlertMsg)
strategy.exit("ExitLong", 'Long', stop=close - close * Stop , limit = close + close * Profit , qty_percent = 100, alert_message = buyAlertMsgExit)
if doShort[2] == false and isShort == false and doShort and time > tm
strategy.cancel_all()
sellAlertMsgExit = getOrderAlertMsgExit(action = 'EXIT_SHORT', instrument = syminfo.ticker, signalToken = signalToken)
sellAlertMsg = getAlertMsg(action = 'ENTER_SHORT', instrument = syminfo.ticker, signalToken = signalToken, orderType = OrderType, orderPriceOffset = OrderPriceOffset, investmentType = InvestmentType, amount = Amount)
strategy.entry('Short', strategy.short, limit=close, comment='Short', alert_message = sellAlertMsg)
strategy.exit("ExitShort", 'Short', stop=close + close * Stop , limit = close - close * Profit , qty_percent = 100, alert_message = sellAlertMsgExit)
//Visual
barcolor(isShort ? color.red : isLong ? color.green : color.blue)
plot(xMA, color=color.new(color.red, 0), title='MA')