[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 846

 
serjik77:

おそらくくだらない質問で気が散るかもしれませんが、ご容赦ください。

まだ習い始めたばかりで、相談できる人がいない。

マニュアルを何度か読み返しました。最もシンプルな機能であるペンディングオーダーでExpert Advisorを開始しました。

注文を一回だけ、ティック毎ではなく、一回だけ開くというのがまだ理解できていません。



次のような関数を挿入します。

int ChPos( int type_H_L) 
{
// возвращает кол-во позици которые открыты 
   int i;
   int col;
   int count=0 ;
   for( i=0; i < OrdersTotal(); i++)         
   {
      if(OrderSelect(i,SELECT_BY_POS)==true) 
       {                                   
           if(OrderType()==OP_BUY && type_H_L==OP_BUY && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_SELL && type_H_L==OP_SELL && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_BUYSTOP && type_H_L==OP_BUYSTOP && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_SELLSTOP && type_H_L==OP_SELLSTOP && OrderMagicNumber()== magic){count++;}
           
       }
    }   
return(count);
}

コードでは、例えばこのようにチェックしてください。

if ( SignalLine > MainLine && ChPos(OP_BUY)==0 )
      { // если сигнальная линия выше основной и нет длинной позы . то закрыть короткую открыть длинную
         if (ChPos(OP_SELL)>0 ) ClosePosition(OP_SELL) ;
         OpenPosition(OP_BUY)  ;
 
オープンオーダーのTPを外すことで、ギャップの均衡を崩さずに採算の合わないポジションをクローズしています。 残念ながらTP=0、ログに非常に迷惑なメッセージが出ましたが。
<br / translate="no"> 2010.09.12 21:34:53 2000.03.06 07:59 money EURUSD,M5: OrderModify error 1

のコードで表示されます。

bool notakeprofit()
{   bool ok=true;
    int k=OrdersTotal();
    for (int i=k-1; i >=0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_368)
        {OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(),NormalizeDouble(0,Point), OrderExpiration(), CLR_NONE);
         }
    else;
       // { Print("OrderSelect() error - ",GetLastError()); ok=false;}
    }
return(ok);
}

すべての市場注文がTP = 0を持っていることをメインコードで確認する必要があるため、私はこの関数の結果を制御する - OK、コードでは、そのOK - それはエラーが発生した場合にのみ変更することができます

HELP MI PLZ!:)

おつかれさまでした

 
abolk:

私の場合、ルールは「名詞、形容詞、副詞の中で、矛盾がある場合、または矛盾を意味する場合はNOTを区切る」 http://www.rusyaz.ru/pr/od07.html- "to do" は NOT -正しい単語は " to do" (ハイライトした単語はハイフンが先行し、矛盾を意味する)です。

ロシア語の解釈が間違っている(!)。別途「not」が書かれることになる。

"to do" は正しくないが、悪い。- という意味で、対立していると理解される。ルールの例をご覧ください。

文中のnotは接続詞で書くこと(同ページ88段落の3が該当)。

"to do"はスペルミス、"to do"が正解です。

 
IgorM:
負けポジションをロックしているので、ポジションの均衡を崩したくないのですが、TPを外さないといけないのですが、日記では何度も出てくるのですが、残念ながらTP=0です。

のコードで表示されます。

すべての市場注文がTP = 0を持っていることをメインコードで確認する必要があるため、私はこの関数の結果を制御する - OK、コードでは、そのOK - それはエラーが発生したときにのみ変更することができます

HELP MI PLZ!:)

おつかれさまでした

NormalizeDouble(0,Point) ではなくNormalizeDouble(0,Digits) かも

 
chief2000:

NormalizeDouble(0,Point) ではなくNormalizeDouble(0,Digits) かも


ありがとうございます。自分で見つけたのですが、エラー#1は直りませんでした。

 
IgorM:


ありがとうございます。自分で見つけたのですが、エラー1番は直りませんでした。

まず、TPに0ではなく他の数値を代入して(誤差をなくすため)、それが 原因かどうか確認します。

 
chief2000:

まず、TPにゼロの代わりに他の数値を代入して(誤差をなくすため)、これが 原因かどうか確認します。


この関数を書くまでは問題なく動作していましたが、今はOrderModify()の代わりにKimさんの関数を呼び出しています。

void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0)

エラーがなくなった

 

osmaタイプのインジケーターで、0を越えるとシグナルが反転するものがあります。

 
ivandurak:


この機能を挿入する

そして、コード内で、以下のようなチェックを行います。

失礼ですが、よろしければ、もう1つ質問をお願いします。

何かがわかり始めているが、すべてではない。

最初の関数は、アプリケーションに未決済注文の数を教えてくれるのですか?

保留中の2つだけを恒久的に表示させる方法をご教示ください。

は、トリガーされたものから独立しています。