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

 

こんにちは、コードで助けを必要とする、私は初心者です。

トレーリングは買い方向でのみ機能し、売り方向では機能せず、コードはエラー"Error of ordermodification. "を表示します。Error code=4051 "です。

以下は、トレーリングを担当するコードの部分です。

void Trailing(int tral)
{ 
  int Mag=OrderMagicNumber();  

  OrderSelect(Mag,MODE_TRADES);

//+------------------------------------------------------------------+

//|                      tral buy                                    |

//+------------------------------------------------------------------+

  if (OrderType()==OP_BUY)

  if(Bid-OrderOpenPrice()>Point*tral)
    {
    if(OrderStopLoss()<Bid-Point*tral) 
       { 
       bool ress= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*tral,Digits),0,0,Blue); 
       if(!ress) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
//+------------------------------------------------------------------+

//|                      tral sell                                   |

//+------------------------------------------------------------------+   
  if (OrderType()==OP_SELL)
  if(OrderOpenPrice()-Ask>Point*tral)
    {
    if(OrderStopLoss()>Ask+Point*tral) 
       { 
       bool res= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*tral,Digits),0,0,Red); 
       if(!res) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
}          

 
Ivan Rozhkov:

こんにちは、コードで助けを必要とする、私は初心者です、私はそれがここに全体のコードを挿入することが適切であるとは思わない。

問題は、トレーリングが買い方向にのみ機能し、売り方向には機能しないことで、コードは"Error in ordermodification.Error code=4051 "です。

この問題を解決してくれる人は、次のアドレスにメッセージを送ってください。

このスレッドはクーロアールではなく、議論をするためのスレッドです。
 
Artyom Trishkin:
話題はクーロアールではなく、ディスカッションのためにある。

ご容赦ください^_^。

コードの一部を貼り付けますので、エラーの発生箇所をお知らせください。

 
Ivan Rozhkov:

ご容赦ください^_^。

コードの一部を挿入しましたので、エラー箇所を教えてください。

このスレッドを見てください - 私はトロールのテンプレートを投稿しました。どこか中途半端。
 
Ivan Rozhkov:

こんにちは、コードで助けを必要とする、私は初心者です。

トレーリングは買い方向でのみ機能し、売り方向では機能せず、コードはエラー"Error of ordermodification. "を表示します。Error code=4051 "です。

以下は、トレーリングを担当する部分です。

//+------------------------------------------------------------------+

//|                      tral sell                                   |

//+------------------------------------------------------------------+   
  if (OrderType()==OP_SELL)
  if(OrderOpenPrice()-Ask>Point*tral)
    {
    if((OrderStopLoss()==0.0) || (OrderStopLoss()>Ask+Point*tral)) 
       { 
       bool res= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*tral,Digits),0,0,Red); 
       if(!res) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
}          
と、全体のデザインが気に入らないので、ここに、あなたとほぼ同じ、シンプルなトレーリングマジックがあります。

bool trailingpos(int magic_,int trail_p)
  {
   bool res=true; double sl,slnew,tpips=trail_p*Point; int i,k=OrdersTotal();
   for(i=0;i<k;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==magic_)
           {
            switch(OrderType())
              {
               case OP_BUY:
                  slnew=NormalizeDouble(Ask-tpips,Digits);
                  sl=OrderStopLoss();
                  if(OrderOpenPrice()<slnew)
                     if((sl<slnew) || (sl==0.0))
                       {
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slnew,OrderTakeProfit(),OrderExpiration(),clrNONE))
                          {res=false; Print(__FUNCTION__,"OrderModify завершилась с ошибкой № ",GetLastError());}
                       }
                  break;
               case OP_SELL:
                  slnew=NormalizeDouble(Bid+tpips,Digits);
                  sl=OrderStopLoss();
                  if(OrderOpenPrice()>slnew)
                     if((sl>slnew) || sl==0.0)
                       {
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slnew,OrderTakeProfit(),OrderExpiration(),clrNONE))
                          {res=false; Print(__FUNCTION__,"OrderModify завершилась с ошибкой № ",GetLastError());}
                       }
                  break;
              }
           }
        }
     }
   return(res);
  }
 
ZigZagのiCustomを正しく書いて、extremaの値を出力させるには?
 
02031986dima:
ZigZagのiCustomを正しく書いて、extremaの値を出すにはどうしたらいいですか?

何も書かなくても、ただ来て、受けて くれればいいんです。

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Igor Makanu:

私は全体の構成が好きではありません。ここに、あなたとほとんど同じ、シンプルなトレーリング・マジックがあります:

どうもありがとうございました。

if((OrderStopLoss()==0.0)

追加したらうまくいったのですが、エラー#1や#4051でスパムが出続けます。

#1-エラーにはなりませんが、結果は不明 です。

#4051-関数パラメーターが 無効な です

 

こんにちは、データ型datatimeの配列があります。

読みやすいファイルにするにはどうしたらいいですか?

コード

int h=FileOpen("test",FILE_WRITE|FILE_CSV|FILE_UNICODE);
      FileWriteArray(h,timeHistory,0,WHOLE_ARRAY);
      FileClose(h);

FILE_BIN フラグがある場合のみ書き込みを行いますが、読み取り不可能な書き込みを行います。

FILE_BIN フラグが存在しない場合、ファイルは空のままである。

 
Karlinvain:

こんにちは、データ型datatimeの配列があります。

読みやすいファイルにするにはどうしたらいいですか?

コード

FILE_BIN フラグがある場合のみ書き込みを行いますが、読み取り不可能な書き込みを行います。

FILE_BIN フラグが存在しない場合、ファイルは空のままである。

FileWriteArray

注.

文字列配列は、TXTタイプのファイルにのみ書き込むことができます。この場合、文字列は自動的に" \r "で終了します。ファイルタイプ ANSI または UNICODE に応じて、文字列が ANSI エンコードに変換されるか、されないかが決まります。