بے ترتیب نمبروں پر مبنی مقداری تجارتی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-07 17:14:20
ٹیگز:

img

جائزہ

اس حکمت عملی کا بنیادی خیال یہ ہے کہ طویل یا مختصر پوزیشنوں کا تعین کرنے کے لئے بے ترتیب نمبروں کا استعمال کرتے ہوئے سکے پھینکنے اور ڈاس رولنگ جیسے احتمالاتی واقعات کی نقالی کرنا ، اس طرح بے ترتیب تجارت کو نافذ کرنا ہے۔ اس طرح کی تجارتی حکمت عملی کا استعمال نقالی ٹیسٹنگ کے لئے کیا جاسکتا ہے اور اس کے علاوہ زیادہ پیچیدہ حکمت عملی کی ترقی کے لئے ایک بنیادی فریم ورک کے طور پر بھی استعمال کیا جاسکتا ہے۔

حکمت عملی کا اصول

  1. استعمال کریںflipمتغیر تصادفی واقعات کا نمونہ اور طویل یا مختصر کی بنیاد پر کا تعین کرنے کے لئےcoinLabelبے ترتیب تعداد کا سائز.

  2. استعمالriskاورratioسٹاپ نقصان مقرر کرنے اور منافع کی لائنز لینے کے لئے.

  3. مقررہ زیادہ سے زیادہ سائیکل نمبر کے مطابق اگلے ٹریڈنگ سگنل کو بے ترتیب طور پر ٹرگر کریں۔

  4. بند پوزیشن باکس کو دکھانے کے لئے کنٹرول کریںplotBox variable.

  5. stoppedOutاورtakeProfitمتغیرات سٹاپ نقصان یا منافع لینے کا پتہ لگانے کے لئے استعمال کیا جاتا ہے.

  6. حکمت عملی کی کارکردگی کو جانچنے کے لئے بیک ٹیسٹنگ کی صلاحیتیں فراہم کریں۔

فوائد کا تجزیہ

  1. کوڈ کی ساخت واضح اور سمجھنے میں آسان ہے اور ثانوی ترقی.

  2. UI تعامل دوستانہ ہے اور مختلف پیرامیٹرز گرافک انٹرفیس کے ذریعے ایڈجسٹ کیا جا سکتا ہے.

  3. بے ترتیب بہت مضبوط ہے اور مارکیٹ کے اتار چڑھاؤ سے متاثر نہیں ہوتا ہے، اعلی وشوسنییتا کے ساتھ.

  4. پیرامیٹر کی اصلاح کے ذریعے سرمایہ کاری پر بہتر واپسی حاصل کی جاسکتی ہے۔

  5. دیگر حکمت عملیوں کے لئے مظاہرے یا ٹیسٹ کے طور پر استعمال کیا جا سکتا ہے.

خطرے کا تجزیہ

  1. رینڈم ٹریڈنگ مارکیٹ کا فیصلہ نہیں کر سکتی اور اس میں منافع کا ایک خاص خطرہ ہے۔

  2. جب زیادہ سے زیادہ پیرامیٹرز کا مجموعہ طے نہیں کیا جاسکتا ہے تو ، بار بار جانچ کی ضرورت ہے۔

  3. سپر کنکشن کا خطرہ ہے جو بہت زیادہ کثافت والے بے ترتیب سگنلز کا نتیجہ بن سکتا ہے۔

  4. خطرات کو کنٹرول کرنے کے لئے سٹاپ نقصان اور منافع لینے کے طریقہ کار کا استعمال کرنے کی سفارش کی جاتی ہے۔

  5. تجارت کے وقفے کو مناسب طریقے سے بڑھا کر خطرات کو کم کیا جاسکتا ہے۔

اصلاح کی ہدایات

  1. بے ترتیب سگنل پیدا کرنے کے لئے زیادہ پیچیدہ عوامل شامل کریں.

  2. ٹیسٹ کے دائرہ کار کو بڑھانے کے لئے تجارت کی اقسام میں اضافہ کریں۔

  3. UI تعامل کو بہتر بنائیں اور حکمت عملی کنٹرول کی صلاحیتوں میں اضافہ کریں.

  4. پیرامیٹرز کی اصلاح کے لیے مزید ٹیسٹ ٹولز اور اشارے فراہم کریں۔

  5. ایک تجارتی سگنل یا سٹاپ نقصان لے منافع جزو کے طور پر استعمال کیا جا سکتا ہے دیگر حکمت عملی میں شامل.

خلاصہ

اس حکمت عملی کا مجموعی فریم ورک مکمل ہے ، جو بے ترتیب واقعات کی بنیاد پر ، اعلی وشوسنییتا کے ساتھ تجارتی سگنل تیار کرتا ہے۔ ایک ہی وقت میں ، یہ پیرامیٹر ایڈجسٹمنٹ ، بیک ٹیسٹنگ ، اور چارٹنگ کی صلاحیتیں مہیا کرتا ہے۔ اس کا استعمال ابتدائی حکمت عملی کی ترقی کی جانچ کرنے کے لئے کیا جاسکتا ہے ، اور دیگر حکمت عملیوں کے لئے بھی ایک بنیادی ماڈیول کے طور پر کیا جاسکتا ہے۔ مناسب اصلاح کے ذریعہ ، حکمت عملی کی کارکردگی کو مزید بہتر بنایا جاسکتا ہے۔


/*backtest
start: 2022-11-30 00:00:00
end: 2023-12-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © melodicfish

//@version=4
strategy("Coin Flipper Pro",overlay=true,max_bars_back=100)

// ======= User Inputs variables=========

h1=input(title="------- Trade Activity -------",defval=false)
maxBars=input(25.0,title="Max Bars between Coin Filps",step=1.0,minval=4.0)

h2=input(title="------- Position Settings -------",defval=false)
risk=input(defval=5.0,title="Risk in % ",type=input.float, minval=0.001 ,step=0.1)
ratio= input(defval=1.5,title="Risk to Reward Ratio x:1 ",type=input.float, minval=0.001,step=0.1)

h3=input(title="------- Plot Options -------",defval=false)
showBox=input(defval=true, title="Show Position Boxes")

h4=input(title="------- Back Testing -------",defval=false)
runTest=input(defval=true, title="Run Strategy Back Test")
customTime=input(defval=false, title="Use Custom Date Range for back test")


tsYear = input(2021,minval=1000,maxval=9999,title= "Test Start Year")
tsMonth = input(1,minval=1,maxval=12,title= "Test Start Month")
tsDay = input(1,minval=1,maxval=31,title= "Test Start Day")
start = timestamp(tsYear,tsMonth,tsDay,0,0)

teYear = input(2021,minval=1000,maxval=9999,title=  "Test Stop Year")
teMonth = input(5,minval=1,maxval=12,title=  "Test Stop Month")
teDay = input(1,minval=1,maxval=31,title=  "Test Stop Day")
end = timestamp(teYear,teMonth,teDay,0,0)

// ======= variables =========
var barsBetweenflips=25
var coinFlipResult=0.0
var flip=true
var coinLabel=0.0
var stoppedOut= true
var takeProfit=true
var posLive=false
var p1=0.0
var p2=0.0
var p3=0.0
var plotBox=false
var posType=0
long=false
short=false


// ===== Functions ======

getColor() => 
    round(random(1,255))


// ===== Logic ========
if barssince(flip==true)>barsBetweenflips and posLive==false
    flip:=true
    coinLabel:=random(1,10)

    // Candle Colors   
candleColor= flip==true and flip[1]==false and barstate.isconfirmed==false?color.rgb(getColor(),getColor(),getColor(),0):flip==false and close>=open?color.green:color.red
candleColor:= barstate.ishistory==true and close>=open?color.green: barstate.ishistory==true and close<open? color.red:candleColor 
barcolor(candleColor)

if flip[1]==true and posLive==false
    flip:=false
    barsBetweenflips:=round(random(3,round(maxBars)))
    posLive:=true
    
long:= flip[1]==true and coinLabel[1]>=5.0
short:= flip[1]==true and coinLabel[1]<5.0


    // Calculate Position Boxes
if long==true and posType!=1 

    riskLDEC=1-(risk/100) 
    p1:= close[1]*(1+((risk/100)*ratio)) // TargetLine
    p2:=close[1]
    p3:= close[1]*riskLDEC // StopLine
    plotBox:=true
    posType:=1
  
if short==true and posType!=-1 

    riskSDEC=1-((risk*ratio)/100)
    p1:= close[1]*riskSDEC   // TargetLine
    p2:=close[1]
    p3:= close[1]*(1+(risk/100)) // StopLine
    plotBox:=true
    posType:=-1

    
    // Check Trade Status 
stoppedOut:= posType==1 and long==false and low<= p3? true: posType==-1 and short==false and high>=p3? true: false  
takeProfit:= posType==1 and long == false and high>= p1? true: posType==-1 and short==false and low<=p1? true: false  
if stoppedOut==true or takeProfit==true
    posType:=0
    plotBox:=false
    posLive:=false


// ====== Plots ========
plot1=plot(plotBox and showBox? p1:na,style=plot.style_linebr,color=color.white, transp= 100)
plot2=plot(plotBox and showBox? p2:na,style=plot.style_linebr,color=color.white, transp= 100)
plot3=plot(plotBox and showBox? p3:na,style=plot.style_linebr,color=color.white, transp= 100)
fill(plot1,plot2,color= color.green)
fill(plot2,plot3,color= color.red)
plotshape(flip==true and flip[1]==false and coinLabel>=5.0,style=shape.labelup,location=location.belowbar, color=color.green,size=size.tiny,title="short label",text="Heads",textcolor=color.white)
plotshape(flip==true and flip[1]==false and coinLabel<5.0,style=shape.labeldown,location=location.abovebar, color=color.red,size=size.tiny,title="short label",text="Tails",textcolor=color.white)
if stoppedOut==true
    label.new(bar_index-1, p3, style=label.style_xcross, color=color.orange)
if takeProfit==true
    label.new(bar_index-1, p1, style=label.style_flag, color=color.blue)
    
    

if runTest==true and customTime==false or runTest==true and customTime==true and time >= start and time <= end 
    strategy.entry("Sell", strategy.short,when=short==true)
    strategy.close("Sell", comment="Close Short", when=stoppedOut==true or takeProfit==true)
    strategy.entry("Long", strategy.long,when=long==true)
    strategy.close("Long",comment="Close Long", when= stoppedOut==true or takeProfit==true )


   
    

مزید