【トレンディ】トレンドラインっぽい線で取引するMEX用BOT

【3.28更新】
 ・要望があったのでPINEコードのパラメータ「Number Of Points」の最大値を5→20へ増加
(脳死でコピペ増量したのでコードが気持ち悪いことになってます...)

https://note.mu/watanabet/n/n715e4d5c5aaf
こちらで紹介されているインジに従って取引するBitMEX用のBOTとなります。

【仕 様】
・コードはPython
・上下のトレンドラインにSTOP注文を置き、抜けた際に順張りさせる
・トレンドラインの上下が反転してる際には何もしない
・利確、損切りは無く上2項目に従いひたすらドテン
・円に換算した場合を考慮して、残高と同等の数量をロングからは減、ショートには増としています。
(残高分をショートした状態が円にした際の価格を保てる。ドル円変動は非考慮)

【注 意】
・5分足以下での設定は考慮していない作りになっています。
・設定ミスによるエラーも考慮しておりませんので、起動直後にエラーメッセージが流れるようでしたら即刻止めてください。
(だいたい3桁の数字と共にエラー内容が表示されますが、500台は無視で大丈夫です。)
・設定したロットが残高を下回る場合ロングには30ロットがセットされます。

無料部分に本BOTと全く同じ動きのTradingView用Pineコードを載せておきますので、いろいろ設定を試して購入をご検討下さい。(おすすめは1h足)
また、質問や改造希望は気軽に「ガーイ@brokenthemoon」までDMください。可能な範囲で対応させていただきます。

ちなみに成行前提のBOTとなっていますので、手数料削減のためアフィリエイト登録されていない方は下記アドレスを利用していただけるとありがたいです。
https://www.bitmex.com/register/kgzDcr

(決まり文句)
筆者は、当noteもしくは当botにより発生した如何なる損害に対しても一切の責任を負いません。

Pineコード

//@version=3
strategy("トレンドライン", overlay=true, commission_value=0.075)
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
len1 = input(8,title="Length Left")
len2 = input(8,title="Length Right")
num = input(2,maxval=20,minval=2,title="Number of Points")

phi = pivothigh(high,len1,len2)
plo = pivotlow(low,len1,len2)
hix1 = n
hiy1 = high
hix2 = n
hiy2 = high
hix3 = n
hiy3 = high
hix4 = n
hiy4 = high
hix5 = n
hiy5 = high
hix6 = n
hiy6 = high
hix7 = n
hiy7 = high
hix8 = n
hiy8 = high
hix9 = n
hiy9 = high
hix10 = n
hiy10 = high
hix11 = n
hiy11 = high
hix12 = n
hiy12 = high
hix13 = n
hiy13 = high
hix14 = n
hiy14 = high
hix15 = n
hiy15 = high
hix16 = n
hiy16 = high
hix17 = n
hiy17 = high
hix18 = n
hiy18 = high
hix19 = n
hiy19 = high
hix20 = n
hiy20 = high
hix1 := phi ? n-len2 : hix1[1]
hiy1 := phi ? high[len2] : hiy1[1]
hix2 := phi ? hix1[1] : hix2[1]
hiy2 := phi ? hiy1[1] : hiy2[1]
hix3 := phi ? hix2[1] : hix3[1]
hiy3 := phi ? hiy2[1] : hiy3[1]
hix4 := phi ? hix3[1] : hix4[1]
hiy4 := phi ? hiy3[1] : hiy4[1]
hix5 := phi ? hix4[1] : hix5[1]
hiy5 := phi ? hiy4[1] : hiy5[1]
hix6 := phi ? hix5[1] : hix6[1]
hiy6 := phi ? hiy5[1] : hiy6[1]
hix7 := phi ? hix6[1] : hix7[1]
hiy7 := phi ? hiy6[1] : hiy7[1]
hix8 := phi ? hix7[1] : hix8[1]
hiy8 := phi ? hiy7[1] : hiy8[1]
hix9 := phi ? hix8[1] : hix9[1]
hiy9 := phi ? hiy8[1] : hiy9[1]
hix10 := phi ? hix9[1] : hix10[1]
hiy10 := phi ? hiy9[1] : hiy10[1]
hix11 := phi ? hix10[1] : hix11[1]
hiy11 := phi ? hiy10[1] : hiy11[1]
hix12 := phi ? hix11[1] : hix12[1]
hiy12 := phi ? hiy11[1] : hiy12[1]
hix13 := phi ? hix12[1] : hix13[1]
hiy13 := phi ? hiy12[1] : hiy13[1]
hix14 := phi ? hix13[1] : hix14[1]
hiy14 := phi ? hiy13[1] : hiy14[1]
hix15 := phi ? hix14[1] : hix15[1]
hiy15 := phi ? hiy14[1] : hiy15[1]
hix16 := phi ? hix15[1] : hix16[1]
hiy16 := phi ? hiy15[1] : hiy16[1]
hix17 := phi ? hix16[1] : hix17[1]
hiy17 := phi ? hiy16[1] : hiy17[1]
hix18 := phi ? hix17[1] : hix18[1]
hiy18 := phi ? hiy17[1] : hiy18[1]
hix19 := phi ? hix18[1] : hix19[1]
hiy19 := phi ? hiy18[1] : hiy19[1]
hix20 := phi ? hix19[1] : hix20[1]
hiy20 := phi ? hiy19[1] : hiy20[1]
x1_hi = hix1
x2_hi = hix2
x3_hi = num >= 3 ? hix3 : 0
x4_hi = num >= 4 ? hix4 : 0
x5_hi = num >= 5 ? hix5 : 0
x6_hi = num >= 6 ? hix6 : 0
x7_hi = num >= 7 ? hix7 : 0
x8_hi = num >= 8 ? hix8 : 0
x9_hi = num >= 9 ? hix9 : 0
x10_hi = num >= 10 ? hix10 : 0
x11_hi = num >= 11 ? hix11 : 0
x12_hi = num >= 12 ? hix12 : 0
x13_hi = num >= 13 ? hix13 : 0
x14_hi = num >= 14 ? hix14 : 0
x15_hi = num >= 15 ? hix15 : 0
x16_hi = num >= 16 ? hix16 : 0
x17_hi = num >= 17 ? hix17 : 0
x18_hi = num >= 18 ? hix18 : 0
x19_hi = num >= 19 ? hix19 : 0
x20_hi = num >= 20 ? hix20 : 0
y1_hi = hiy1
y2_hi = hiy2
y3_hi = num >= 3 ? hiy3 : 0
y4_hi = num >= 4 ? hiy4 : 0
y5_hi = num >= 5 ? hiy5 : 0
y6_hi = num >= 6 ? hiy6 : 0
y7_hi = num >= 7 ? hiy7 : 0
y8_hi = num >= 8 ? hiy8 : 0
y9_hi = num >= 9 ? hiy9 : 0
y10_hi = num >= 10 ? hiy10 : 0
y11_hi = num >= 11 ? hiy11 : 0
y12_hi = num >= 12 ? hiy12 : 0
y13_hi = num >= 13 ? hiy13 : 0
y14_hi = num >= 14 ? hiy14 : 0
y15_hi = num >= 15 ? hiy15 : 0
y16_hi = num >= 16 ? hiy16 : 0
y17_hi = num >= 17 ? hiy17 : 0
y18_hi = num >= 18 ? hiy18 : 0
y19_hi = num >= 19 ? hiy19 : 0
y20_hi = num >= 20 ? hiy20 : 0

lox1 = n
loy1 = high
lox2 = n
loy2 = high
lox3 = n
loy3 = high
lox4 = n
loy4 = high
lox5 = n
loy5 = high
lox6 = n
loy6 = high
lox7 = n
loy7 = high
lox8 = n
loy8 = high
lox9 = n
loy9 = high
lox10 = n
loy10 = high
lox11 = n
loy11 = high
lox12 = n
loy12 = high
lox13 = n
loy13 = high
lox14 = n
loy14 = high
lox15 = n
loy15 = high
lox16 = n
loy16 = high
lox17 = n
loy17 = high
lox18 = n
loy18 = high
lox19 = n
loy19 = high
lox20 = n
loy20 = high
lox1 := plo ? n-len2 : lox1[1]
loy1 := plo ? plo : loy1[1]
lox2 := plo ? lox1[1] : lox2[1]
loy2 := plo ? loy1[1] : loy2[1]
lox3 := plo ? lox2[1] : lox3[1]
loy3 := plo ? loy2[1] : loy3[1]
lox4 := plo ? lox3[1] : lox4[1]
loy4 := plo ? loy3[1] : loy4[1]
lox5 := plo ? lox4[1] : lox5[1]
loy5 := plo ? loy4[1] : loy5[1]
lox6 := plo ? lox5[1] : lox6[1]
loy6 := plo ? loy5[1] : loy6[1]
lox7 := plo ? lox6[1] : lox7[1]
loy7 := plo ? loy6[1] : loy7[1]
lox8 := plo ? lox7[1] : lox8[1]
loy8 := plo ? loy7[1] : loy8[1]
lox9 := plo ? lox8[1] : lox9[1]
loy9 := plo ? loy8[1] : loy9[1]
lox10 := plo ? lox9[1] : lox10[1]
loy10 := plo ? loy9[1] : loy10[1]
lox11 := plo ? lox10[1] : lox11[1]
loy11 := plo ? loy10[1] : loy11[1]
lox12 := plo ? lox11[1] : lox12[1]
loy12 := plo ? loy11[1] : loy12[1]
lox13 := plo ? lox12[1] : lox13[1]
loy13 := plo ? loy12[1] : loy13[1]
lox14 := plo ? lox13[1] : lox14[1]
loy14 := plo ? loy13[1] : loy14[1]
lox15 := plo ? lox14[1] : lox15[1]
loy15 := plo ? loy14[1] : loy15[1]
lox16 := plo ? lox15[1] : lox16[1]
loy16 := plo ? loy15[1] : loy16[1]
lox17 := plo ? lox16[1] : lox17[1]
loy17 := plo ? loy16[1] : loy17[1]
lox18 := plo ? lox17[1] : lox18[1]
loy18 := plo ? loy17[1] : loy18[1]
lox19 := plo ? lox18[1] : lox19[1]
loy19 := plo ? loy18[1] : loy19[1]
lox20 := plo ? lox19[1] : lox20[1]
loy20 := plo ? loy19[1] : loy20[1]
x1_lo = lox1
x2_lo = num >= 2 ? lox2 : 0
x3_lo = num >= 3 ? lox3 : 0
x4_lo = num >= 4 ? lox4 : 0
x5_lo = num >= 5 ? lox5 : 0
x6_lo = num >= 6 ? lox6 : 0
x7_lo = num >= 7 ? lox7 : 0
x8_lo = num >= 8 ? lox8 : 0
x9_lo = num >= 9 ? lox9 : 0
x10_lo = num >= 10 ? lox10 : 0
x11_lo = num >= 11 ? lox11 : 0
x12_lo = num >= 12 ? lox12 : 0
x13_lo = num >= 13 ? lox13 : 0
x14_lo = num >= 14 ? lox14 : 0
x15_lo = num >= 15 ? lox15 : 0
x16_lo = num >= 16 ? lox16 : 0
x17_lo = num >= 17 ? lox17 : 0
x18_lo = num >= 18 ? lox18 : 0
x19_lo = num >= 19 ? lox19 : 0
x20_lo = num >= 20 ? lox20 : 0
y1_lo = loy1
y2_lo = num >= 2 ? loy2 : 0
y3_lo = num >= 3 ? loy3 : 0
y4_lo = num >= 4 ? loy4 : 0
y5_lo = num >= 5 ? loy5 : 0
y6_lo = num >= 6 ? loy6 : 0
y7_lo = num >= 7 ? loy7 : 0
y8_lo = num >= 8 ? loy8 : 0
y9_lo = num >= 9 ? loy9 : 0
y10_lo = num >= 10 ? loy10 : 0
y11_lo = num >= 11 ? loy11 : 0
y12_lo = num >= 12 ? loy12 : 0
y13_lo = num >= 13 ? loy13 : 0
y14_lo = num >= 14 ? loy14 : 0
y15_lo = num >= 15 ? loy15 : 0
y16_lo = num >= 16 ? loy16 : 0
y17_lo = num >= 17 ? loy17 : 0
y18_lo = num >= 18 ? loy18 : 0
y19_lo = num >= 19 ? loy19 : 0
y20_lo = num >= 20 ? loy20 : 0

my_least_squares_method(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y20,num) =>
    slope = ((x1*y1+x2*y2+x3*y3+x4*y4+x5*y5+x6*y6+x7*y7+x8*y8+x9*y9+x10*y10+x11*y11+x12*y12+x13*y13+x14*y14+x15*y15+x16*y16+x17*y17+x18*y18+x19*y19+x20*y20)/num - (x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17+x18+x19+x20)/num*(y1+y2+y3+y4+y5+y6+y7+y8+y9+y10+y11+y12+y13+y14+y15+y16+y17+y18+y19+y20)/num)/((x1*x1+x2*x2+x3*x3+x4*x4+x5*x5+x6*x6+x7*x7+x8*x8+x9*x9+x10*x10+x11*x11+x12*x12+x13*x13+x14*x14+x15*x15+x16*x16+x17*x17+x18*x18+x19*x19+x20*x20)/num - (x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17+x18+x19+x20)/num*(x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17+x18+x19+x20)/num)
    intercept = -1*slope*((x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17+x18+x19+x20)/num)+(y1+y2+y3+y4+y5+y6+y7+y8+y9+y10+y11+y12+y13+y14+y15+y16+y17+y18+y19+y20)/num
    y = slope*n + intercept

y_hi = my_least_squares_method(x1_hi,x2_hi,x3_hi,x4_hi,x5_hi,x6_hi,x7_hi,x8_hi,x9_hi,x10_hi,x11_hi,x12_hi,x13_hi,x14_hi,x15_hi,x16_hi,x17_hi,x18_hi,x19_hi,x20_hi,y1_hi,y2_hi,y3_hi,y4_hi,y5_hi,y6_hi,y7_hi,y8_hi,y9_hi,y10_hi,y11_hi,y12_hi,y13_hi,y14_hi,y15_hi,y16_hi,y17_hi,y18_hi,y19_hi,y20_hi,num)
y_lo = my_least_squares_method(x1_lo,x2_lo,x3_lo,x4_lo,x5_lo,x6_lo,x7_lo,x8_lo,x9_lo,x10_lo,x11_lo,x12_lo,x13_lo,x14_lo,x15_lo,x16_lo,x17_lo,x18_lo,x19_lo,x20_lo,y1_lo,y2_lo,y3_lo,y4_lo,y5_lo,y6_lo,y7_lo,y8_lo,y9_lo,y10_lo,y11_lo,y12_lo,y13_lo,y14_lo,y15_lo,y16_lo,y17_lo,y18_lo,y19_lo,y20_lo,num)
plot(y_hi,linewidth=2,color=blue)
plot(y_lo,linewidth=2,color=red)
plotshape(phi,style=shape.triangledown,color=blue,offset=-len2)
plotshape(plo,style=shape.triangleup,color=red,offset=-len2,location=location.belowbar)

if (not na(close) and y_hi > y_lo)
    strategy.entry("Long", strategy.long, stop=y_hi + syminfo.mintick, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.entry("Short", strategy.short, stop=y_lo - syminfo.mintick, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

ここから先は

11,191字

¥ 10,000

この記事が気に入ったらサポートをしてみませんか?