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

 
artmedia70:

intiHighest( string symbol,int timeframe,int type,int count=WHOLE_ARRAY,int start=0, int start=0)

見つかった最高値のインデックスを返します(現在のバーからの相対的なオフセット)。
パラメータ
記号 - 検索対象となるシンボルの名称。NULLはカレントシンボルを意味する。
タイムフレーム - 期間チャートの期間の ひとつとすることができる。0は現在のチャートの期間を示します。
タイプ - タイムスケールの識別子。任意の時系列識別子と することができる。
カウント - 検索対象となる時系列の要素数(現在のバーから昇順のインデックスへの方向)。
立ち上がり - 最高値の検索を開始する開始バーのインデックス(現在のバーからのオフセット)を指定します。負の値は無視され、ゼロの値に置き換えられる。


ありがとうございました。もう質問はないと思います。
 
ask:

何が人にとって不明確なのか--。何が原因で攻撃的で野暮ったくなったのか(無視すればよかったのに)、他の人は反応したのか、それとも自分で立ち直ったのか、私にはどちらもわかりません。あなたにとっては、すべて同じことなのでしょうか?

アレクセイをそんなふうに考えてはいけない。彼は、ここで最も慈悲深い人物の一人です。彼はあなたを怒らせるつもりはなかったのです。みんな、問題がわからないとテレパシーで送られる。ローカルジョークに意味があるんです。
 
Reshetov:

さらに、コンパイラから見てまともなコードに変更したとしても

というのは、比較する前に実測値を正規化しないと、やはり理論的に間違ってしまうからです。また、1ティックに1ピップ以上価格が変動した場合、正規化に失敗することがあり、条件を見逃すことがあります。

交差条件の正しい検索方法は


追伸:MetaTraderでコンパイルした後、エラーのある場所を見つけるのは非常に簡単です。

1.ツールボックス」タブの「ファイル」欄に、コンパイラがエラーを検出した行番号とシンボルの番号をカンマで区切って指定します。

2.同じタブの「説明」欄にあるエラーメッセージをダブルクリックすると、コンパイラがまさにこのエラーを検出した場所にエディタのカーソルがジャンプします。


ヒントをありがとうございました。

 
こんにちは!フォーラムメンバーの皆さん、こんにちは。もし可能なら、アドバイスをお願いします。プラットフォームをオフにすると、雑誌のデータは必然的に消去されますよね?また、Expert Advisorからのプリントやその他の出力データを、コンピュータの電源を切ったときに、メモ帳などに保存しておくには、どのように書けばよいのでしょうか? あまりに複雑で、可能性がないのでは?
 
dkfl.zrjdktdbx:
こんにちは!フォーラムメンバーの皆さん、こんにちは。もし可能なら、アドバイスをお願いします。プラットフォームをオフにすると、雑誌のデータは必然的に消去されますよね?また、Expert Advisorからのプリントやその他の出力データを、コンピュータの電源を切ったときに、メモ帳などに保存しておくには、どのように書けばよいのでしょうか? あまりに複雑で、可能性がないのでは?
さて、プログラムフォルダ内のログを見ると、そこには興味深いことがたくさん書かれています。
 
ありがとうございました。
 
建玉価格とストップロス価格を持っていて、預け入れ通貨で 起こりうる損失を計算する方法を教えてください。
 
sss2019:
注文の開始価格とストップロスの価格で、預け入れ通貨で可能な損失を計算する方法を教えてください。
//--------------------------------------------------------------------
// Функция модификации StopLoss всех ордеров указанного типа
// Глобальные переменные:
// Mas_Ord_New             Массив ордеров последний известный
// int TralingStop         Значение TralingStop(количество пунктов)
//--------------------------------------------------------------------
void SampleTrailing_texbook ( int Tip, double V_StopLossPips, double V_TakeProfitPips)
  {
   int Ticket;                      // Номер ордера
   double
   Price,                           // Цена открытия рыночного ордера
   TS,                              // TralingStop (относит.знач.цены)
   SL,                              // Значение StopLoss ордера
   TP;                              // Значение TakeProfit ордера
   double difference; //разность в пунктах    
   double Profit;
   
   bool Modify;                     // Признак необходимости модифи.
//----------------------------------------------------------------------
      PointValue=MarketInfo(Symbol(),MODE_TICKVALUE)*(MarketInfo(Symbol(),MODE_POINT)/MarketInfo(Symbol(),MODE_TICKSIZE));      
      Print("PointValue = ",PointValue, " Point  = ", DoubleToStr(Point, Digits) );
      Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL ); // мин уровень трала
      Modify=false;                       // Пока не назначен к модифи
      
      Price = OrderOpenPrice();           // Цена открытия ордера
      SL    = V_StopLossPips;             // Значение StopLoss ордера
      TP    = V_TakeProfitPips;           // Значение TakeProft ордера
      Ticket= OrderTicket();              // Номер ордера
      
      if (TralingStop<Level_new)          // Если меньше допустимого..
         TralingStop=Level_new;           // .. то допустимый
         TS=TralingStop*Point;            // То же в относит.знач.цены
      //-----------------------------------------------------------------
      switch(Tip)                         // Переход на тип ордера
        {
         case 0 :                         // Ордер Buy
            difference = NormalizeDouble (Bid-TS - OrderOpenPrice(), Digits)/Point;               
            Profit = Lots_New * difference*PointValue; // Профит по УРОВНЮ ТРАЛА рыночного ордера на данном объеме (не путать c OrderProfit)
            if (trlinloss==false){         // тралим только профит
               if (Profit>MathAbs (Sum_Loss)) // если профит по уровню трала больше суммарного убытка предыдущих поз 
                 if (NormalizeDouble(SL,Digits)<// Если ниже желаемого..
               NormalizeDouble(Bid-TS,Digits) && NormalizeDouble(Price,Digits)< NormalizeDouble(Bid-TS,Digits))
              {                           // ..то модифицируем его:
               SL=Bid-TS;                 // Новый его StopLoss
               Modify=true;               // Назначен к модифи.
              }
            } 
             else {                         // тралим с зоны лоссов
               if (NormalizeDouble(SL,Digits)<// Если ниже желаемого..
               NormalizeDouble(Bid-TS,Digits))
              {                           // ..то модифицируем его:
               SL=Bid-TS;                 // Новый его StopLoss
               Modify=true;               // Назначен к модифи.
              }
             } 
            break;                        // Выход из switch
         
         
         case 1 :                          // Ордер Sell
             difference = NormalizeDouble (OrderOpenPrice()-(Ask+TS),Digits)/Point;
             Profit = Lots_New * difference*PointValue; // Профит по УРОВНЮ ТРАЛА рыночного ордера на данном объеме (не путать c OrderProfit)             
             if (trlinloss==false) {          // тралим с уровня профита по ордеру
                if (Profit>MathAbs (Sum_Loss)) // если профит по уровню трала больше суммарного убытка предыдущих поз            
                   if ((NormalizeDouble(SL,Digits)>  // Если выше желаемого..
                        NormalizeDouble(Ask+TS,Digits)||
                        NormalizeDouble(SL,Digits)==0) && NormalizeDouble(Price,Digits)>NormalizeDouble(Ask+TS,Digits)) //.. или нулевой(!)
              {                           // ..то модифицируем его
               SL=Ask+TS;                 // Новый его StopLoss
               Modify=true;               // Назначен к модифи.
              }
            }            
            else {                        // тралим с зоны лоссов
          
            if (NormalizeDouble(SL,Digits)>// Если выше желаемого..
               NormalizeDouble(Ask+TS,Digits)||
               NormalizeDouble(SL,Digits)==0)//.. или нулевой(!)
              {                           // ..то модифицируем его
               SL=Ask+TS;                 // Новый его StopLoss
               Modify=true;               // Назначен к модифи.
              }
            }  
        }                                 // Конец switch
      if (Modify==false)                  // Если его не надо модифи..
         return;                        // ..то идём по циклу дальше
      bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифицируем его!
      //----------------------------------------------------------------------
      if (Ans==false)                     // Не получилось :( 
        {                                 // Поинтересуемся ошибками:
            Print("Не удалось модифицировать ордер №",OrderTicket(),". Ошибка: ",GetLastError());
            return;                       // .. то уходим.
        }
}                                         // Выход из пользов. функции


このトレーダーズフィオンは、教科書に載っているものを、私が自分のニーズに合わせて作り直したものです。ここでは、ロットの与えられたボリューム上の利益の計算、トロールのレベルと以前の閉鎖された連続した負けポジションの合計損失以上の利益の値で - トロールが有効になっている - あなたが必要とするように、ここだけのように、利益ではなく、損失を適用するには、同様のすべてを持っているでしょう - 。

BuyとSellの変数の計算に注意すること。

double difference; //разность в пунктах    
double Profit; 
PointValue=MarketInfo(Symbol(),MODE_TICKVALUE)*(MarketInfo(Symbol(),MODE_POINT)/MarketInfo(Symbol(),MODE_TICKSIZE));
すべて同じようにやって、それでおしまい。
 
では、預金 通貨でのポイント値を調べる方法がまだわからないのですが?
 
sss2019:
では、預金通貨でのポイント値を調べる方法がまだわからないのですが?

この 計算を参照してください - ANALOGUEを行う。すべてです。