エラー、バグ、質問 - ページ 873

 
mario065:

レシェトフさん、こんにちは。

あなたにとっては「なんじゃこりゃ」、私にとっては「修正機能の呼び出しをしなければならない状態」です。

コードを見ていれば、書かないはずです。

コードではそうなっています。

  double Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),4);
  double SL   = NormalizeDouble(PositionGetDouble(POSITION_SL),4);
  double TP   = NormalizeDouble(PositionGetDouble(POSITION_TP),4);

あったらあったでいいじゃん。どの位置で計算するんだこのクソは?Print()やデバッガーを使って、if()の前にある変数SL, TP, Openがどんな値なのか、ログでオープンポジションが どんな値なのかを確認してみてください。
 

レシェトフさん、ありがとうございます。

完了しました。

  double buy_trail = 0;
  double sel_trail = 0;
  double SL,TP,Open;
  if(PositionSelect(Symbol())){
    if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
      {
      Open = PositionGetDouble(POSITION_PRICE_OPEN);
      SL   = PositionGetDouble(POSITION_SL);
      TP   = PositionGetDouble(POSITION_TP);
      Bid  = SymbolInfoDouble(Symbol(),SYMBOL_BID);
      buy_trail = NormalizeDouble(Bid - Open,Digits());
      if(buy_trail > MStop)
       {
        if(NormalizeDouble((Bid - MStop),Digits()) >= Open && Open > SL)
          {
           ModifyPosition(Symbol(),Open,TP);
          }
          if(NormalizeDouble((Bid - MStop),Digits()) > SL && Open <= SL)
           {
            ModifyPosition(Symbol(),NormalizeDouble((SL + 0.001),Digits()),TP);
           }
        }
      }
    if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
      {
      Open = PositionGetDouble(POSITION_PRICE_OPEN);
      SL   = PositionGetDouble(POSITION_SL);
      TP   = PositionGetDouble(POSITION_TP);
      Ask  = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
      sel_trail = NormalizeDouble(Open - Ask,Digits());
      if(sel_trail > MStop)
       { 
        if(NormalizeDouble((Ask + MStop),Digits()) <= Open && Open < SL)
          {
           ModifyPosition(Symbol(),Open,TP);
          }
          if(NormalizeDouble((Ask + MStop),Digits()) < SL && Open >= SL)
           {
            ModifyPosition(Symbol(),NormalizeDouble((SL - 0.001),Digits()),TP);
           }
        }
      }
     }

修正機能そのもの。

//+------------------------------------------------------------------+
//| Modify position.                                                 |
//+------------------------------------------------------------------+
bool ModifyPosition(const string symbol,double StopLoss,double Takeprofit){
//---- обявяване на структурата и резултата на търговското искане
   MqlTradeRequest request={0};
   MqlTradeResult result={0};
//---- структурна инициализация на  търговското искане MqlTradeRequest за модифициране на  позиция
   request.action       = TRADE_ACTION_SLTP;
   request.symbol       = symbol;
   request.sl           = StopLoss;
   request.tp           = Takeprofit;
   string word          = "";
   StringConcatenate(word,
                     "<<< ============ Modifyposition():   Модифицираме позицията  ",
                     symbol," ============ >>>");
   Print(word);
//---- модифицираме позицията и  проверяваме резултата от търговското искане
   if(!OrderSend(request,result) || result.deal==0)
     {
      Print("Modify error =", GetLastError());
      return(false);
     }
   return(true);
  }

さて、今はポジションを探すどころではありません。

ERR_TRADE_SEND_FAILED - 4756 を削除しました。

現在は「4753 -Position not found」と表示されています。

うまくいくこともありますが、位置が見つからなかったというようなバグもあります。

 
mario065:

レシェトフさん、ありがとうございます。

完了しました。

修正機能そのもの。

さて、今はポジションを探すどころではありません。

ERR_TRADE_SEND_FAILED - 4756 を削除しました。

4753時間目-アイテムが見つかりません

うまくいくこともありますが、位置が見つからなかったというようなバグもあります。

既成の貿易クラスを使った方がいい。EAを作成する際の標準ライブラリのトレードクラスの使用 方法を見る

例えば、シンボルの位置を修正する。

//--- Класс CTrade
#include <Trade\Trade.mqh>

//--- Объект класса CTrade
CTrade mytrade;



void OnTick() {
...
  if (myposition.Select(_Symbol))
  {
    int newStoploss = 250;
    int newTakeprofit = 500;
    double SL = mysymbol.Ask() – newStoploss*_Point;    
    double TP = mysymbol.Ask() + newTakeprofit*_Point;  
    // модифицируем открытую позицию по этому символу
    mytrade.PositionModify(_Symbol,SL,TP);
  }
...
}
とても短く、はっきりと出てきます。
 

了解しました。

イェデルキンが 助けた。 これがそのコードだ。

ありがとうございます :)

ファイル:
 

unblock my IP(現在、自宅のパソコンで取得中です。

403 - запрещено. Доступ запрещен.
Предоставленные учетные данные не дают права на просмотр этого каталога или страницы.

).

また、クラウドとシグナル サービスの認証も失いました。ちなみに、あるリアルアカウントはシグナルを使用しています(以前は使用していましたが、現在は認証がないため)。

最大10端末+ブラウザで動作します。サイトをダウンロードしていない、壊していない、など。- 私はフォーラムのルールに反することはしていません。

削除済み  
notused:

unban my IP(現在、自宅のパソコンで取得中です。

).

また、クラウドとシグナルサービスの認証も失いました。ちなみに、あるリアルアカウントはシグナルを使用しています(以前は使用していましたが、現在は認証がないため)。

最大10端末+ブラウザで動作します。サイトをダウンロードしていない、壊していない、など。- この掲示板のルールに矛盾することはしていません。

同じ問題は、約14から00キエフで、モデレータは、私は禁止にないことを言った、その後、理由は何ですか?

 
notused:

unblock my IP(現在、自宅のパソコンで取得中です。

).

また、クラウドとシグナルサービスの認証も失いました。ちなみに、あるリアルアカウントはシグナルを使用しています(以前は使用していましたが、現在は認証がないため)。

最大10端末+ブラウザで動作します。サイトをダウンロードしていない、壊していない、など。- 私はフォーラムのルールに反することはしていません。

変かな?結局、BANされたら、しかもIPでなら、掲示板で話すこともできないのでは?
削除済み  
Reshetov:
変かな?結局のところ、あなたが禁止されている場合、さらにIP上で、それは思えるだろうし、あまりにも通信するためのフォーラムはできませんか?

司会者は、私は私のニックネームで行くので、禁止ではなく、自動非表示のIPを介して変更されたことを言ったが、それは唯一のマスクだ、端末はまだネイティブの下で実行し、信号が送信されません!私は、それが私のニックネームで、IPは、自動非表示のIPを介して変更されたことを言った。

アドミンスタッフが応える!

 
remjte:

司会者は、私は私のニックネームで行くので、禁止ではなく、自動非表示のIPを介して変更されたことを言ったが、それは唯一のマスクだ、端末はまだネイティブの下で実行し、信号が送信されません!私は、それが私のニックネームで、IPは、自動非表示のIPを介して変更されたことを言った。

アドミンスタッフが応える!

サービスデスクに行った方がいい。しかし、あなたがプロファイルをブロックしている場合、おそらくできませんか?
 
Reshetov:レシェトフ
サービスデスクへの連絡のしやすさ

別のIPからログインしています。しかし、アカウントは禁止されていません。禁止されているのはIPです。サービスデスクに手紙を出したので、明日の返事を待つことにする。