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

 
kwadrad:

どうすればいいのでしょうか?

オープン前のデータを更新し、価格を正規化する。

ヴィン

私はすぐに、この閉鎖はお勧めできないと書きました。文書化されていない機能が使用されています。しかし、どんなオープンポジションもクローズ時間は0であり、終値は現在の終値と同じになります。

今更ながら)

 
kwadrad:

どうすればいいのでしょうか?

ポジションを建 てるときに設定する価格をよく見てください。きっと、あるに違いない...。Askは Bidと ごっちゃになっていませんか?
 
artmedia70:
ポジションを建てるときに設定する価格をよく見てください。きっと、あるに違いない...。Askは Bidと ごっちゃになっていませんか?

はい、そうです。持っています。
 
kwadrad:

である。ありがとうございます。
どういたしまして。初心者が最初に戸惑うことだと思うので、それはわかっているのですが......。
 
どなたか、単純なトレーリングストップで、ストップレベルの代わりに価格の後ろに保留中の注文を 移動させた方はいらっしゃいますか?できるのでしょうか?
試行錯誤しましたが、保留中の注文が病人のように価格の裏で行ったり来たりするばかりで...

ストップではなくオーダーを扱うように、シンプルなトレーリング機能を作り直すことは可能でしょうか?例えばこれ。

//+----------------------------------------------------------------------------+
//|  Сопровождение позиции простым тралом                                      |
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                   (-1 - любая позиция)                    |
//|    mn - MagicNumber                (-1 - любой магик)                      |
//+----------------------------------------------------------------------------+
  void TrailingPositionsSimplTR(string sy="", int op=-1, int mn=-1) {
  double p, pp;
  int    i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  p=MarketInfo(sy, MODE_POINT);
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_BUY) {
            pp=MarketInfo(sy, MODE_BID);
            if (!ProfitTrailing || (pp-OrderOpenPrice())>TrailingStopBuy*p) {
              if (OrderStopLoss()<pp-(TrailingStopBuy+TrailingStepSimplTR-1)*p) {
                ModifyOrder(sy, -1, pp-TrailingStopBuy*p, 0, clModifyBuy);//
              }
            }
          }
          if (OrderType()==OP_SELL) {
            pp=MarketInfo(sy, MODE_ASK);
            if (!ProfitTrailing || OrderOpenPrice()-pp>TrailingStopSell*p) {
              if (OrderStopLoss()>pp+(TrailingStopSell+TrailingStepSimplTR-1)*p || OrderStopLoss()==0) {
                ModifyOrder(sy, -1, pp+TrailingStopSell*p, 0, clModifySell);
              }
            }
          }
        }
      }
    }
  }
}
 
ToLik_SRGV:

Print()は4桁に切り上げてコンソールに正しく出力するため、double型(この場合はiOpen() この場合、 小数点以下5 桁)、DoubleToStr() 関数を使用する必要があります。

string DoubleToStr(double value,int digits)
数値を、指定された精度での数値の文字表現を含むテキスト文字列に変換する。

パラメータ

value - Величина с плавающей точкой.

digits - Формат точности, число цифр после десятичной точки (громное спасибо.


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


このEAをチェックして、そこに実装しています。

http://www.rogersignals.com/ru/experts.php?a=Support_Resistance

OK、ありがとう、調べてみるよ...。
 
artmedia70:
どなたか、単純なトレーリングストップで、ストップレベルの代わりに価格の後ろに保留中の注文を移動させた方はいらっしゃいますか?できるのでしょうか?
試行錯誤しましたが、保留中の注文が病人のように価格の後ろで行ったり来たりするばかりで...。

ストップではなくオーダーを扱うように、シンプルなトレーリング機能を作り直すことは可能でしょうか?例えばこれ。

何もかもが複雑すぎる :)))
以下は私のコードです。

//+------------------------------------------------------------------+
void trailingOrder(int magic, int trailing){
   int index = 0;
   while(trailing > 0 && OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS)){
      if(OrderMagicNumber() == magic){
         if(OrderType() == OP_BUYSTOP){
            if(OrderOpenPrice() - Ask > Point*trailing){
               if((Ask+Point*trailing)-Ask >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point && (Ask+Point*trailing)-Ask > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point){
                  if(!OrderModify(OrderTicket(),Ask+Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку!");
               }
            }
            return;
         }
         if(OrderType() == OP_SELLSTOP){
            if(Bid - OrderOpenPrice() > Point*trailing){
               if(Bid-(Bid-Point*trailing) >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point && Bid-(Bid-Point*trailing) > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point){
                  if(!OrderModify(OrderTicket(),Bid-Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку!");
               }
            }
            return;
         }
      }
      index++;
   }
}
//+------------------------------------------------------------------+
メソッドには、遅延メジと希望するトロールをパラメータとして渡します。
 
      for (i =0;i<OrdersTotal();i++)
      {
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true&&OrderMagicNumber()==MAGICMA&&OrderSymbol()==Symbol())
         {
            if (MathAbs(funk-OrderOpenPrice())>Point)
            {
               if (OrderType()==OP_BUYSTOP||OrderType()==OP_BUYLIMIT&&MathAbs(Ask-funk)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
               {
                  OrderModify(OrderTicket(),NormalizeDouble(funk,Digits),OrderStopLoss(),NormalizeDouble(funk+TakeProfiti*Point,Digits),0);
               }
               if (OrderType()==OP_SELLSTOP||OrderType()==OP_SELLLIMIT&&MathAbs(Bid-funk)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
               {
                  OrderModify(OrderTicket(),NormalizeDouble(funk,Digits),OrderStopLoss(),NormalizeDouble(funk-TakeProfiti*Point,Digits),0);
               }
            }
         }
      }
このように、計算されたファンク値によって順序がトロールされます。
 
ToLik_SRGV:

ちょっと複雑すぎますね :))
以下は私のコードです。

メソッドにパラメータとして、a delayed medjw、および希望するtrallを渡す。

ありがとうございました。これだと思います!(笑