[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 201

 
isaev-av:

ありがとうございます。DCによってDigitを4または5に変更する必要がありますか?

変える必要はなく、通貨によって取ればいいだけです。マーケット情報
 
isaev-av:

ありがとうございます。DCによって、Digitを4または5に変更する必要がありますか?

ディジットを 残すだけで、勝手にフィットしてくれます。
 
同志たちよ、非常にシンプルなシステムを考えてみると......。MACDが5分以上ゾーンになければ、オープンします。なぜかトレードが開かない...。のアドバイスをお願いします...
//+------------------------------------------------------------------+ 
  //| MACD ^^^.mq4 | 
  //| Copyright © 2011, MetaQuotes Software Corp. | 
  //| http://www.metaquotes.net | 
  //+------------------------------------------------------------------+ 
  #property copyright "Copyright © 2011, MetaQuotes Software Corp." 
  #property link "http://www.metaquotes.net" 

  extern int TP = 100; 
  extern int TS = 100; 
  extern int TF = 1; 
  extern double lots = 0.1; 
  int fast_ema = 5; 
  int slow_ema = 34; 
  int signal_period = 5; 
  int slip = 3; 
  int Magic = 1; 

 int total; 
 int ticket; //объявил тотал и тикет 

 //+------------------------------------------------------------------+ 
  //| expert initialization function | 
  //+------------------------------------------------------------------+ 
  int init() 
    { 
  //---- 

 //---- 
     return(0); 
    } 
  //+------------------------------------------------------------------+ 
  //| expert deinitialization function | 
  //+------------------------------------------------------------------+ 
  int deinit() 
    { 
  //---- 

 //---- 
     return(0); 
    } 
  //+------------------------------------------------------------------+ 
  //| expert start function | 
  //+------------------------------------------------------------------+ 
  int start() 
    { 
  //---- 

 bool signal = signal_MACD(); 
  AnalyzeSignal(signal); 

 //---- 
     return(0); 
    } 
  //+------------------------------------------------------------------+ 

 bool signal_MACD() 
  { 
    bool signal_MACD = false; 
    double tmp = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); 
    for(int i=1;i<=5;i++) 
    { 
       if(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp,4)<0.0) 
       { 
          signal_MACD = true; 
          break; 
       } 
    } 
  } 

 void AnalyzeSignal(bool signal) 
  { 
     total = OrdersTotal();
     double MACD = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); 
     if(total < 1)
     {
     if(signal == true)
     {
         if(MACD > 0)
         {
            ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"Покупаем",Magic,0,Green); 
            if(ticket>0) 
            { 
            OrderSelect(ticket,SELECT_BY_TICKET); 
            Print("открылись на покупку по цене:", OrderOpenPrice()); 
            } 
            else 
            { 
            Print("открыться не удалось по причине:", GetLastError()); 
            return(0); 
            } 
         }
         if(MACD < 0)
         {
             ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"Продаем",Magic,0,Red); 
             if(ticket>0) 
             { 
             OrderSelect(ticket,SELECT_BY_TICKET); 
             Print("открылись на продажу по цене:", OrderOpenPrice()); 
             } 
             else 
             { 
             Print("открыться не удалось по причине:", GetLastError()); 
             return(0); 
             } 
         }
         else
            return(0);
     }
     }
  }
  
  
  
  
  
 
助けてみんなが持っているMACDサンプルEAにロット計算を追加しようと思っています。変更後、コンパイルができなくなりました :( Help!
double Lots()
  {
   double Lots;
   Lots=AccountFreeMargin()/10000*5;
   Lots=MathMin(15,MathMax(0.1,Lots));
   if(Lots<0.1) 
     Lots=NormalizeDouble(Lots,2);
   else
     {
     if(Lots<1) Lots=NormalizeDouble(Lots,1);
     else       Lots=NormalizeDouble(Lots,0);
     }
     return(Lots);
  }
 

ハイ

EAがエラーを出し、if ((Bid-OrderOpenPrice(),Digits)>=-60) code 130, give every new tick and really loads server....

に変更すると、if ((pBid-NormalizeDouble(OrderOpenPrice(),Digits)) のようになります。==-60) -動作しません...

正確には≧が必要で、どうすればいいのか?

どうか解明してください。

ありがとうございました!!!

 

取引に関わる通貨ペアの数をプログラムで計算するにはどうすればよいですか?

オープンオーダーを検索してみました。3つの通貨ペアでExpert Advisorを動かしてみました。それぞれで違う結果が出たんです。

が3(正解)、2が2、3が1です。

2つの通貨ペアで試してみました。

が2(正解)、2が1(正解)。衰退のパターンがなければ、失敗したと思っていたかもしれない

int val() 
{
   int kp=1;
   string x1="0",x2="0", x3="0", x4="0", x5="0", x6="0", x7="0", x8="0", x9="0", x10="0", x11="0", x12="0", x13="0", x14="0",       x15="0",
          x16="0", x17="0", x18="0",  x19="0",  x20="0",  x21="0",  x22="0", x23="0",  x24="0";
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
     if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
     if(OrderSymbol()==Symbol())   break;
      if(x9!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol()  &&  x4!=OrderSymbol() &&  x5!=OrderSymbol()  &&  x6!=OrderSymbol()   &&  x7!=OrderSymbol()  &&  x8!=OrderSymbol()   &&  x9!=OrderSymbol() && x10=="0") {x10=OrderSymbol(); kp=11;}      
      if(x8!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol()  &&  x4!=OrderSymbol() &&  x5!=OrderSymbol()  &&  x6!=OrderSymbol()   &&  x7!=OrderSymbol()  &&  x8!=OrderSymbol() && x9=="0") {x9=OrderSymbol(); kp=10;}      
      if(x7!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol()  &&  x4!=OrderSymbol() &&  x5!=OrderSymbol()  &&  x6!=OrderSymbol()   &&  x7!=OrderSymbol() && x8=="0") {x8=OrderSymbol(); kp=9;}      
      if(x6!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol()  &&  x4!=OrderSymbol() &&  x5!=OrderSymbol()  &&  x6!=OrderSymbol() && x7=="0") {x7=OrderSymbol(); kp=8;}      
      if(x5!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol()  &&  x4!=OrderSymbol() &&  x5!=OrderSymbol() && x6=="0") {x6=OrderSymbol(); kp=7;}      
      if(x4!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol()  &&  x4!=OrderSymbol() && x5=="0") {x5=OrderSymbol(); kp=6;}      
      if(x3!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol() && x4=="0") {x4=OrderSymbol(); kp=5;}      
      if(x2!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() && x3=="0") {x3=OrderSymbol(); kp=4;}      
      if(x1!="0" &&  x1!=OrderSymbol() && x2=="0") {x2=OrderSymbol(); kp=3;}      
      if(x1=="0") {x1=OrderSymbol(); kp=2;}
   }
  return(kp);
}
 
skyjet:
変更後、コンパイルできなくなりました :(

なんて書いてあるんだ?
 
Figar0:

さて、どんなことが書いてあるのでしょうか?
エラー12件、警告12件。ロット計算の入力が間違っているのでは?
 
forexnew:

取引に関わる通貨ペアの数をプログラムで計算するにはどうすればよいですか?

オープンオーダーを検索してみました。3つの通貨ペアでExpert Advisorを動かしてみました。それぞれで違う結果が出たんです。

が3(正解)、2が2、3が1です。

2つの通貨ペアで試してみました。

が2(正解)、2が1(正解)。衰退のパターンがなければ、失敗したと思っていたかもしれない


あるいは、EAの助けを借りて、アクティブな楽器のリストを作るだけかもしれません。アプローチはちょっと複雑なんです。もっとシンプルなやり方があるんじゃないですか?
 
skyjet:
エラー12件、警告12件。ロット計算の入力が間違っているのでは?

関数自体にエラーはなく、おそらく使おうとするとエラーが発生するのでしょうが、それを見せてくれませんね。ファイルに直接コンパイルしないものを投稿していただければ、推測する必要はありません。