MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 698

 
Vitaly Muzichenko:

書くのに飽きるまで

マジかよ)
 
multiplicator:
マジかよ)

でも、3つ以上書くと、後で読むのが大変になるから、特に書いてから時間が経っている場合はね。このような多くの入れ子になったifは、別の関数に分けた方が良い。またはスイッチオペレータを使用する ...場合

 

新しいティックが入った後にクリックすると、新しいウィンドウは表示されず、最初のウィンドウの値が使用されるようにする方法はありますか?

void OnTick()
  {
 if (Orders()<1 && (1==message || !use_MessageBox)){
   ticket=OrderSend(Symbol(), OP_SELL, lot, Bid, slippage, Ask+stopLoss*Point, Bid-takeProfit*Point, "", magic, 0, Red); message=0; 
 } 
 if (Orders()<1 && (message==0 || message==2) && use_MessageBox){
 if(use_PlaySound) PlaySound ("tick");
 message=-2;
 message =MessageBox("Текст, содержащий сообщение для отображения", "Необязательный текст для отображения в заголовке", IDOK);
   }
if (Orders()<1 && (1==message || !use_MessageBox)){
   ticket=OrderSend(Symbol(), OP_SELL, lot, Bid, slippage, Ask+stopLoss*Point, Bid-takeProfit*Point, "", magic, 0, Red); message=0; 
 }

}
 
void Trailing()
{
   for (int i=OrdersTotal() - 1; i>=0; i--)
   {
      if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
      {
         if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol())
         {
            if (OrderType() == OP_BUY)
            {
               if (Bid - OrderOpenPrice() > TrailingStop*Point)
               {
                  if (OrderStopLoss() < Bid-Point*(TrailingStop+TrailingStep) || OrderStopLoss() == 0)
                  {
                     if (!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStop,Digits),OrderTakeProfit(),0,Blue))
                        Print("error order modify");
                  }
               }
            }
         }
      }
   }
   
   if (OrderType() == OP_SELL)
   {
      if (OrderOpenPrice() - Ask > TrailingStop*Point)
      {
         if (OrderStopLoss() > Ask + Point * (TrailingStop+TrailingStep) || OrderStopLoss() == 0 )
         {
            if (!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*TrailingStop,Digits),OrderTakeProfit(),0,Red))
               Print("error order modify");
         }
      }
   }
}
//--------------------------------------------------------

こんにちは、テストでは期待どおりに動作しますが、実際の生活の中でしない、またはエラーOrderModifyエラー4108と時間から時間に一度だけ、スパム、私は間違っているのか理解できない、それを修正してください、私はEAが正しく変更のための注文を選択 しないことを理解しています。

私のEAについて述べたいと思います。

2本のMAがクロスしたら、マジックを使ってショートとロング、2つのポジションを建てる。短いものは武井かMAクロスオーバーで閉じ、長いものはトロールする必要があります。トロールのロングポジションの選択は、マジックナンバーで行われます。

おそらく、ポジションオープン時のコードの一部にミスがあったのだと思います。

//BUY
   if (fast1>slow1&&fast2<slow2)
     {
      if (StopLoss_1>0)   sl=NormalizeDouble(Bid-StopLoss_1*Point,Digits);   else sl=0;
      if (TakeProfit_1>0) tp=NormalizeDouble(Ask+TakeProfit_1*Point,Digits); else tp=0;
      closeshrts();
      OrderSend(Symbol(),OP_BUY,Lts,NormalizeDouble(Ask,Digits),5,sl,tp,NULL,0,0,Blue);
     }
   //BUY_2
   if (fast1>slow1&&fast2<slow2)  
     {
      if (StopLoss_2>0)   sl=NormalizeDouble(Bid-StopLoss_2*Point,Digits);   else sl=0;
      if (TakeProfit_2>0) tp=NormalizeDouble(Ask+TakeProfit_2*Point,Digits); else tp=0; 
      closeshrts();
      OrderSend(Symbol(),OP_BUY,Lts,NormalizeDouble(Ask,Digits),5,sl,tp,NULL,MagicNumber,0,Blue);
     }  
     
   //SELL
   if(fast1<slow1&&fast2>slow2)
     {
      if (TakeProfit_1>0) sl=NormalizeDouble(Ask+StopLoss_1*Point,Digits);   else sl=0;
      if (StopLoss_1>0)   tp=NormalizeDouble(Bid-TakeProfit_1*Point,Digits); else tp=0;
      closelongs();
      OrderSend(Symbol(),OP_SELL,Lts,NormalizeDouble(Bid,Digits),5,sl,tp,NULL,0,0,Red);
     }
   //SELL_2
   if(fast1<slow1&&fast2>slow2)
     {
      if (TakeProfit_2>0) sl=NormalizeDouble(Ask+StopLoss_2*Point,Digits);   else sl=0;
      if (StopLoss_2>0)   tp=NormalizeDouble(Bid-TakeProfit_2*Point,Digits); else tp=0;
      closelongs();
      OrderSend(Symbol(),OP_SELL,Lts,NormalizeDouble(Bid,Digits),5,sl,tp,NULL,MagicNumber,0,Red);
     } 

ループで注文を出すべきでしょうか? また、正しいストップとテイクプロフィットが設定されるように、このコードを正しく書くにはどうしたらよいでしょうか? 私が書いたものでは、売りのみで動作し、買いはストップが0に設定されています。

(どうか、正しい方向に導いてください))

 
こんにちは、友人からMQL4アルファベットについて質問を受けました。
では、キリル文字-ロシア文字はアルファベットに含まれるのでしょうか?
そして、クエスチョンマーク ?は、アルファベットの文字集合に含まれる?
とか、バックスラッシュは、アルファベットの一部なのか、そうでないのか?
 
が入ります。
 
Alexander Zhmurenko:
)が入ってきます。

何が入るのか、詳しく教えてください。 私が書いたのは、知人の言葉を引用したものです。それをコピーして貼り付けただけです。MQLを教えようとしている。頭を悩ませているので、何が入るか書いてください。

a ) クエスチョンマーク ( ? )

b) バックスラッシュ (\)

 
Zvezdochet:

何が入るのか、詳しく教えてください。 私が書いたのは、知人の言葉を引用したものです。それをコピーして貼り付けただけです。MQLを教えようとしている。頭を悩ませているので、何が入るか書いてください。

a ) クエスチョンマーク ( ? )

b ) バックスラッシュ ( ┣ )

キリル文字の使用は文書化されていない機能です

IDに使用できる文字:数字0~9、異なる文字として認識される小文字a~zと大文字A~Z、アンダースコア文字(_)。最初の文字が数字であることはできません。

の構文で構成されています。

 
int OnInit()
  {
//---
   color желтый = clrAqua;
//---
   return(INIT_SUCCEEDED);
  }
は、変数も可能です。
 

こんにちは、なぜZigD[0]が出力されないのか、教えていただけませんか?

   for(ww = 0; ww <= Bars-1; ww++)
  {
      zzz = iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, ww);
      
           if(zzz > 0.0)   
           {
           ZigM[kk]=zzz;
            kk++; 
           ZigD[dd]=ww;
            dd++;  
            }
   }