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

 

チャートからExpを削除するコードは既にお渡ししています。(1つのチャートにつき)1つしか存在できないので、この関数を自分のハンドルで呼び出すと、expは自分自身を削除することになります。

 
FAQ:


...自分自身に削除の命令を出すこと


ありがとうございます、うまくいきました。

追伸

#include <WinUser32.mqh>
 
言うまでもないことですが。インポートされた関数を 使用する場合、関連するアプリケーションからのエクスポートを接続することを忘れないでください。
 
助けて、どうして動かないの?

ありがとうございます。

//-----
  static bool First = true;
  static int PreOrdersTotal = 0;
  int NowOrdersTotal = CountTrades();
  if(First)
  {
    PreOrdersTotal = NowOrdersTotal;
    First = false;
    return(0);
  }
  if(UseSound == true && NowOrdersTotal < PreOrdersTotal) {PlaySound(CloseSound);}
  PreOrdersTotal = NowOrdersTotal;
//-----

 
FAQ:

ウィンドウを閉じ、自分に削除のコマンドを出す...

PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);

そのため、MQL4ではExpert Advisorを終了させる標準的な方法は用意されていません。Win32のAPIを直接使用する場合のみ。

了解です、ありがとうございます。

 
takeda:

そのため、MQL4ではExpert Advisorを終了させる標準的な方法は用意されていません。Win32のAPIを直接使用する場合のみ。

なるほど、ありがとうございます。

図書館 MT4運用に便利な機能を多数搭載。Expert Advisorの削除を含め、あります。
 
Zhunko:
図書館 MT4運用に便利な機能を多数搭載。Expert Advisorの削除 を含めて、あります。

見てみた(ここまではざっくりとした感じ)。素晴らしい図書館ですね。

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

 

こんにちは。

オーダーモディフィケーションが部分的に動作するのですが、何が問題なのかを解明してください。

コードとログを添付します。ログにうまくいったこと、いかなかったことを書いているのですが......。

void AllSellLockBuyModifi()
{
 double sell_sl = 0.0;
 double sell_tp = NormalizeDouble((AllAvP()-TakeProfit*Point),Digits);
 int spread = MarketInfo(Symbol(),MODE_SPREAD);
 double lock_buy_tp = NormalizeDouble((LastSellLockBuyAvP()+TakeProfit*Point),Digits);
 double last_sell_sl = NormalizeDouble((lock_buy_tp+spread*Point),Digits);
 double lock_buy_sl = NormalizeDouble((sell_tp-spread*Point),Digits);     
 Print("AllAvP = ",AllAvP()," sell_tp = ",sell_tp," lock_buy_tp = ",lock_buy_tp," last_sell_sl = ",last_sell_sl," lock_buy_sl = ",lock_buy_sl);
 for (int i = 0; i <= OrdersTotal(); i++)
    {
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol()!=Symbol())continue;
     if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
     if (OrderType()==OP_SELL)
       {Print("Find Sell Order");
        if (OrderOpenPrice()==!LastSellPrice()) sell_sl = 0;
        if (OrderOpenPrice()==LastSellPrice()) sell_sl = last_sell_sl;
        Print("Мод-ция ордера SELL № ",OrderTicket());
        OrderModify (OrderTicket(),OrderOpenPrice(),sell_sl,sell_tp,0,CLR_NONE);
        error=GetLastError();
        if (error != 0) Print("Мод-ция ордера SELL № ",OrderTicket()," ошибка № ",error);
       }         
         else 
             { Print("Find BUY Order");       
              if (OrderType()==OP_BUY)
                {
                 Print("Мод-ция ордера LOCK BUY");
                 OrderModify (OrderTicket(),OrderOpenPrice(),lock_buy_sl,lock_buy_tp,0,CLR_NONE);
                 error=GetLastError();
                 if (error != 0) Print("Мод-ция ордера LOCK BUY № ",OrderTicket()," ошибка № ",error);
                }
             }
    }
 return(0);
}
ファイル:
log.txt  4 kb
 
TEXX:

こんにちは。

オーダーモディフィケーションが部分的に動作するのですが、何が問題なのかを解明してください。

コードとログを添付します。ログには、うまくいったこと、いかなかったことを書きました......。


まずは、これらの行を訂正してください。

for (int i = 0; i <= OrdersTotal(); i++)
    {
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

これらに

for (int i = 0; i < OrdersTotal(); i++)
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
 
PapaYozh:


まずは、これらの行を訂正してください。

をこれらに追加しました。


を、助けなかった...。