2016年5月27日金曜日

【EAを作ろう】第九回 他通貨設定を楽にしよう2 二桁四桁対応

前回は通貨ペアごとの桁数の違いを整えました。
こんどはブローカーによって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 件のコメント:

コメントを投稿