こんどはブローカーによって2桁4桁 3桁5桁と別れているところを修正します。
2桁4桁のブローカーと契約が無いので、テストできてませんが完璧なはずw
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(){
if (Digits == 2|| Digits == 4)
{
SL=StopLoss * Point * 0.1;
TP=TakeProfit* Point * 0.1;
}
else
{
SL=StopLoss*Point;
TP=TakeProfit*Point;
}
return(INIT_SUCCEEDED);}
void OnTick(){
if(OrdersTotal()==0) {
if(RSI()>UpperLine){EntryShort();}
if(RSI()<LowerLine){EntryLong();}
Comment(TP,SL);
}
}
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);}
Digits は 桁数が格納されています。
|| は or
桁数が2桁 もしくは 桁数が4桁の時は
(一桁足りないので) *0.1しています。
else以降は条件が合わなかった時の命令です。
桁数が2桁 もしくは 桁数が4桁でない時は
以前と同じようにPointをかけています。
使えるブローカーをできるだけ増やしたいときはこんな処理もできますよ程度です@@;
0 件のコメント:
コメントを投稿