USDJPYで15分足で試してみてます。
(改修をいろいろ加えている途中のものです。)
////エラー定義////バーの数が100未満であれば、エラーとするErr := If(BarCount()<100,1,0);
////データ表示用////36期間のWilliams'%R//a := willr(36);a := willr(14);//データのBollinger Band Bottomを返します。Bollinger_bottom := BBandBot ( CLOSE , 14 , S , 2 ) ;
//データのBollinger Band Topを返します。Bollinger_top := BBandTop ( CLOSE , 14 , S , 2 ) ;
////買い仕掛けシグナル////Williams'%Rが-70以下になったら、買い仕掛けシグナルONBuyOpenSignal := If(a<=-70 and ( Bollinger_bottom < HIGH and Bollinger_bottom > LOW
) ,1,0);//BuyOpenSignal := 0;
////売り仕掛けシグナル////Williams'%Rが-20以上になったら、売り仕掛けシグナルONSellOpenSignal := If(a>=-20 and ( Bollinger_top < HIGH and Bollinger_top > LOW )
,1,0);//SellOpenSignal := 0;
////買い仕切りシグナル////Williams'%Rが-30以上になったら、買い仕切りシグナルONBuyCloseSignal := a>=-30;//BuyCloseSignal := If(BuyRate+0.2<HIGH,1,0);//
////売り仕切りシグナル////Williams'%Rが-60以下になったら、売り仕切りシグナルONSellCloseSignal := a<=-60;//SellCloseSignal:= If(SellRate-0.3<LOW,0,1);////ストップレート////ストップレート=1.0×ポイント数(通貨ペアにより0.01または0.0001)×100StopRate := 0.5*Symbolpoint()*100;
////買い値////チャートをBIDに設定しているとみなし、スプレッドを加算するBuyRate := CLOSE+SymbolPoint()*Spread;
////売り値////チャートをBIDに設定しているとみなし、スプレッドを加算しないSellRate := CLOSE;
////現在の買いポジション////前回の買い仕掛け注文が無ければ「NULL」、//あるいは、前回の買い仕切り注文が無ければ、「前回の買い仕掛け注文値」、//あるいは、前回の買い仕切り注文が、前回の買い仕掛け注文よりも過去であれば、「前回の買い仕掛け注文値」//そうで無ければ、「NULL」BuyPosition := If(BarsSince(Ref(BuyOpen,-1))=NULL,NULL, If(BarsSince(Ref(BuyClose,-1))=NULL,ValueWhen(1,BuyOpen<>NULL,BuyOpen), If(BarsSince(Ref(BuyOpen,-1))<BarsSince(Ref(BuyClose,-1)),ValueWhen(1,BuyOpen<>NULL,BuyOpen),NULL)));
////現在の売りポジション////前回の売り仕掛け注文が無ければ「NULL」、//あるいは、前回の売り仕切り注文が無ければ、「前回の売り仕掛け注文値」、//あるいは、前回の売り仕切り注文が、前回の売り仕掛け注文よりも過去であれば、「前回の売り仕掛け注文値」//そうで無ければ、「NULL」SellPosition := If(BarsSince(Ref(SellOpen,-1))=NULL,NULL, If(BarsSince(Ref(SellClose,-1))=NULL,ValueWhen(1,SellOpen,SellOpen), If(BarsSince(Ref(SellOpen,-1))<BarsSince(ref(SellClose,-1)),ValueWhen(1,SellOpen<>NULL,SellOpen),NULL)));
////買い仕掛け注文////エラーまたは、買いポジションを持っていれば、「NULL」、//あるいは、買い仕掛けシグナルONであれば、「買い値」//そうで無ければ、「NULL」BuyOpen := If((Err<>0) or (BuyPosition<>NULL),NULL, If(BuyOpenSignal,BuyRate,NULL));
////売り仕掛け注文////エラーまたは、売りポジションを持っていれば、「NULL」、//あるいは、売り仕掛けシグナルONであれば、「売り値」//そうで無ければ、「NULL」SellOpen := If((Err<>0) or (SellPosition<>NULL),NULL, If(SellOpenSignal,SellRate,NULL));
////買いストップ値////買い仕掛け注文がNULLで無ければ、「買い値-ストップレート」、//あるいは、買いポジションを持っていなければ、「NULL」、//そうで無ければ、次の内の最大値、//「前回の買いストップ値」//「買い仕掛け値-ストップレート」//「売り値-ストップレート」BuyStopRate := If(BuyOpen<>NULL,BuyRate-StopRate, If(BuyPosition=NULL,NULL, Max(Prev, Max(BuyPosition-StopRate,SellRate-StopRate))));
////売りストップ値////売り仕掛け注文がNULLで無ければ、「売り値-ストップレート」、//あるいは、売りポジションを持っていなければ、「NULL」、//そうで無ければ、次の内の最小値、//「前回の売りストップ値」//「売り仕掛け値+ストップレート」//「買い値+ストップレート」SellStopRate := If(SellOpen<>NULL,SellRate+StopRate, If(SellPosition=NULL,NULL, Min(Prev, Min(SellPosition+StopRate,BuyRate+StopRate))));
////買い仕切り注文////買いポジションを持っていなければ、「NULL」、//あるいは、買い仕切りシグナルONであれば、「売り値」、//あるいは、売り値が買いストップ値以下であれば、「売り値」、//そうで無ければ、「NULL」BuyClose := If(BuyPosition=NULL,NULL, If(BuyCloseSignal Or (SellOpen<>NULL),SellRate, If(SellRate<=BuyStopRate,SellRate,NULL)));
////売り仕切り注文////売りポジションを持っていなければ、「NULL」、//あるいは、売り仕切りシグナルONであれば、「買い値」、//あるいは、買い値が売りストップ値以上であれば、「買い値」、//そうで無ければ、「NULL」SellClose := If(SellPosition=NULL,NULL, If(SellCloseSignal Or (BuyOpen<>NULL),BuyRate, If(BuyRate>=SellStopRate,BuyRate,NULL)));
////買いドローダウン////買いポジションを持っておらず、買い仕掛け注文がNULLであれば、「0」、//そうで無ければ、「安値-買い仕掛け値」BuyDrawDown := If(BuyPosition=NULL and BuyOpen=NULL,0,LOW-BuyPosition);
////売りドローダウン////売りポジションを持っておらず、売り仕掛け注文がNULLであれば、「0」、//そうで無ければ、「売り仕掛け値-高値」SellDrawDown := If(SellPosition=NULL and SellOpen=NULL,0,SellPosition-HIGH);
////買い仕切り後の損益////買い仕切り注文がNULLであれば、「0」、//そうで無ければ、「買い仕切り値-買い仕掛け値」BuyProfit := If(BuyClose=NULL,0,BuyClose-BuyPosition);
////売り仕切り後の損益////売り仕切り注文がNULLであれば、「0」、//そうで無ければ、「売り仕掛け値-売り仕切り値」SellProfit := If (SellClose=NULL,0,SellPosition-SellClose);
////合計損益//Profit := Cum(BuyProfit+SellProfit);
////合計ドローダウン//DrawDown := If((BuyPosition=NULL) and (SellPosition=NULL),NULL,Ref(Profit,-1) + BuyDrawDown + SellDrawDown);
////買い仕切り注文(自動売買)////買い仕切り注文がNULLでは無く、OpenBuyイベント数がCloseBuyイベント数より大きければ、「1」、//そうで無ければ、「0」CloseBuy := If((BuyClose<>NULL) and (EventCount('OpenBuy')>EventCount('CloseBuy')),1, 0);
////売り仕切り注文(自動売買)////売り仕切り注文がNULLでは無く、OpenSellイベント数がCloseSellイベント数より大きければ、「1」、//そうで無ければ、「0」CloseSell := If((SellClose<>NULL) and (EventCount('OpenSell')>EventCount('CloseSell')),1, 0);
////買い仕掛け注文(自動売買)////買い仕掛け注文がNULLでは無く、OpenBuyイベント数がCloseBuyイベント数と等しければ、「1」、//そうで無ければ、「0」OpenBuy := If((BuyOpen<>NULL) and (EventCount('OpenBuy')=EventCount('CloseBuy')),1, 0);
////売り仕掛け注文(自動売買)////売り仕掛け注文がNULLでは無く、OpenSellイベント数がCloseSellイベント数と等しければ、「1」、//そうで無ければ、「0」OpenSell := If((SellOpen<>NULL) and (EventCount('OpenSell')=EventCount('CloseSell')),1, 0);
このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー と 利用規約 が適用されます。
1文字以上入力してください
本文は少なくとも1文字以上必要です。
1文字以上入力してください。