[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 508

 
artmedia70:

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

返回找到的最高值的索引(相对于当前条形图的偏移)。
参数。
标志 - 符号的名称,该符号的数据将被搜索到。NULL表示当前符号。
时限 - 期间。可以是图表 中的一个时期。0表示当前图表的周期。
类型 - 时间序列的标识符。可以是任何一个时间序列的标识符
- 时间序列的元素数量(在从当前条形图到升序索引的方向上),其中应执行搜索。
开始 - 开始搜索最高值的起始栏的索引(从当前栏的偏移量)。负值会被忽略,并被一个零值取代。
例子。


非常感谢你。我认为不会再有任何问题了。
 
ask:

对一个人来说,有什么可以不清楚的呢--我不知道。我也不知道是什么原因导致了他的攻击性和粗野(他们可能只是忽略了这一点),其他人是否会做出反应,或者他是否会自己恢复过来--这对你来说都一样吗?

你不应该以这种方式看待阿列克谢。他是这里最仁慈的人之一。他并不是有意冒犯你。如果不了解问题,每个人都会被送到心灵感应者那里。这是一个有意义的当地笑话。
 
Reshetov:

它们是这样的(你的代码中还有更多的错误,但这些错误甚至不会通过编译器):此外,即使你把代码改成从编译器的角度看更合理的东西

如果在比较之前不先对实际值进行归一化处理,理论上还是会有错误。此外,如果价格在一个点上变化超过一个点,而你的条件被遗漏,正常化可能会失败。

搜索穿越条件的正确方法是


P.S. 在MetaTrader中编译后很容易找到有错误的地方。

1.在 "工具箱 "选项卡的 "文件 "栏中,指定编译器检测到错误的行号和符号号,用逗号分隔。

2.如果你双击同一标签的 "描述 "字段中的错误信息,编辑器的光标将跳到编译器检测到这个错误的地方。


谢谢你的提示。

 
下午好!对所有论坛成员表示敬意。如果可以,请告知--当你关闭平台时,杂志上的数据必然被清除,对吗?你如何写下打印或任何其他专家顾问的输出数据,以便当你关闭电脑时,它们会被保存在记事本或其他地方? 这不是太复杂了吗,有可能吗?
 
dkfl.zrjdktdbx:
下午好!对所有论坛成员表示敬意。如果可以,请告知--当你关闭平台时,杂志上的数据必然被清除,对吗?你如何写下打印或任何其他专家顾问的输出数据,以便当你关闭电脑时,它们会被保存在记事本或其他地方? 这不是太复杂了吗,有可能吗?
好吧,如果你看一下程序文件夹中的日志,你会发现那里有很多有趣的东西。
 
谢谢你!
 
你能告诉我如何通过开盘价和止损价来计算存款货币 的可能损失吗?
 
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;                       // .. то уходим.
        }
}                                         // Выход из пользов. функции


我根据自己的需要,对教科书中的这个交易员的 概念进行了重新加工。在这里,计算给定手数的利润,在拖网水平和利润值高于以前关闭的连续亏损头寸的总损失--拖网被启用--你将拥有一切类似的东西,只是应用的不是利润,如这里,而是损失--如你需要。

注意买入和卖出变量的计算。

double difference; //разность в пунктах    
double Profit; 
PointValue=MarketInfo(Symbol(),MODE_TICKVALUE)*(MarketInfo(Symbol(),MODE_POINT)/MarketInfo(Symbol(),MODE_TICKSIZE));
以同样的方式做每件事,就是这样。
 
所以我还是不明白如何找出存款货币 的点值?
 
sss2019:
所以我还是不明白如何找出存款货币的点值?

一切都是。