StopLoss、TakeProfit共に 0.01にしています。
USDJPYやEURJPYでは1Pipsです。
ところがEURUSDでは100Pipsになってしまいます。
桁数が異なるからです。
通貨ペアが異なれば設定値は変わりますが、同じような桁で考えたいと思うのは人の常
そこでPointを使います。
Pointは少数3ケタの通貨ペアでは0.001
5桁の通貨ペアでは0.00001になります。
extern int UpperLine=70,LowerLine=30,RSIPeriod=20,StopLoss=10,TakeProfit=10,Magic=747;
extern ENUM_APPLIED_PRICE AppliedPrice=0;
double SL,TP;
int OnInit(){
SL=StopLoss*Point;
TP=TakeProfit*Point;
return(INIT_SUCCEEDED);}
void OnTick(){
if(OrdersTotal()==0) {
if(RSI()>UpperLine){EntryShort();}
if(RSI()<LowerLine){EntryLong();}
}
}
double RSI(){return(iRSI(Symbol(),PERIOD_CURRENT,RSIPeriod,AppliedPrice,1));}
void EntryLong(){int d=OrderSend(Symbol(),OP_BUY,0.1,Ask,0,Ask-SL,Ask+TP,"Long",Magic,0,clrNONE);}
void EntryShort(){int d=OrderSend(Symbol(),OP_SELL,0.1,Bid,0,Bid+SL,Bid-TP,"Short",Magic,0,clrNONE);}
行数が長いと見にくいので短くしました。
extern intを、カンマで並列記述
double RSI()は理解のためにrに一度入れていましたが直接return()へ記述
void Entry~の改行を減らしました。
こうやって自分勝手な見にくいソースができていくのですが、ブログでは短いほうがいいと思いますのでご理解ください。
少数3ケタ、5ケタのブローカ向けです。(2桁4桁のブローカーまだあるのかな?)
水色のStopLoss,TakeProfitはdoubleで0.01としていましたがint で10にしました。
黄色の戦闘でSL,TPをdoubleで宣言
OnInitで前処理として SLはStopLoss 掛ける Point、TPはTakeProfit 掛ける Pointとしています。
USDJPYの場合 StopLossは10 Pointは0.001 ですのでSLは0.01 1Pips
EURUSDの場合 StopLossは10 Pointは0.00001 ですのでSLは0.0001 1Pips
と両方1Pipsになりました。
だれか、どの通貨ペアで、どの設定が最適か教えて下さいw
だれか、どの通貨ペアで、どの設定が最適か教えて下さいw
0 件のコメント:
コメントを投稿