[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 580

 
Craft >>:

А я в форексе не силён.....как учитывается спред?


在同一时刻的最佳买入(买入)和卖出(卖出)价格之间的差异--即供求关系。如果您在外汇市场上进行买入交易,您以买入价买入,而当您关闭订单时,您以卖出价卖出,买入价和卖出价之间的差额将是点差的价值,对于不同的货币和不同的经纪公司,通常为2至6点。
 

我认为这在代码中已经得到了考虑,在OrderSend中,出价与要价是规定的。

//--------------------------------------------------------------- 8 --
   // Открытие ордеров
   while(true)                                  // Цикл закрытия орд.
     {
      if (Total==0 && Opn_B==true)              // Открытых орд. нет +
        {                                       // критерий откр. Buy
         RefreshRates();                        // Обновление данных
         Alert("Попытка открыть Buy. Ожидание ответа..");
         Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,0,0);//Открытие Buy
         if (Ticket > 0)                        // Получилось :)
           {
            Alert ("Открыт ордер Buy ",Ticket);
            return;                             // Выход из start()
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
      if (Total==0 && Opn_S==true)              // Открытых орд. нет +
        {                                       // критерий откр. Sell
         RefreshRates();                        // Обновление данных
         Alert("Попытка открыть Sell. Ожидание ответа..");
         Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,0,0);//Открытие Sel
         if (Ticket > 0)                        // Получилось :)
           {
            Alert ("Открыт ордер Sell ",Ticket);
            return;                             // Выход из start()
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
      break;                                    // Выход из while
     }
 
Craft >>:

А я в форексе не силён.

期货不是外汇。

如何考虑到价差?

通常会被扣除。

 
Swetten >>:

Фьючерсы -- это не Форекс.

我明白了,决定填补这个空白。所以这段代码不能适用于期货?
 
你可以。你需要知道点价和价差
 

好了,伙计们--帮助。以下是合同的具体内容。

我需要考虑什么/怎么做?

 

虱子的成本和虱子的大小 -- 这就是问题所在。

我的意思是,你得到的是。一个 "点 "是五个点。五个点(用外汇术语说是一个 "点")的成本是3,大致上是卢布。

也就是说,离散化(对吗?)不是1:1,而是1:5的一个最小价格变化。

一般来说,最好是等待老同志的到来。

 

下午好。追踪止损的问题。

不太正确的修改命令。事实证明,无论价格如何变动,止损 水平都是跟着价格走的。

比方说,我们开了一个买入订单。价格增长,追踪止损触发,止损被拉高。然后,价格向相反方向移动,订单没有被关闭。

该订单没有被关闭,而是被修改并降低了止损水平。结果是交易变得无利可图,尽管它是在正确的方向上打开的。

  total=OrdersTotal();
      
  for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
          
            // check for trailing stop
         
            if(TrailingStop>0)  
              {               
               if( Bid-OrderOpenPrice()>Point*TrailingStop )
                 { 
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     
                     OrderModify(OrderTicket(),OrderOpenPrice(), Bid-StopLoss,Bid + TakeProfit/*OrderTakeProfit()*/,0,Green);
                     
                     return(0);
                    }
                 }
              }
           }
         else // go to short position
           {
             
            // check for trailing stop
          
            if(TrailingStop>0 )  
              { 
                            
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  
                    if((OrderStopLoss()>(Ask+Point*TrailingStop)) )
                      {
                      
                     
                       OrderModify(OrderTicket(),OrderOpenPrice(),Ask+StopLoss,Ask-TakeProfit/*OrderTakeProfit()*/,0,Red);
                       
                       return(0);
                      }
                 }
              }
           }           
           
        }     

我想这是通过检查if( Bid-OrderOpenPrice()>Point*TrailingStop)来防止的,但这似乎是错误的。你有什么建议?

 
vanson >>:

Доброго времени суток. Проблема с Trailing Stop'ом.

Не совсем корректно модифицируются ордера. Получается так,что уровень Stop Loss следует за ценой независимо от движения цены.

Допустим открывается ордер на покупку. Цена растет,срабатывает trailing stop и стоп лосс подтягивается. Потом цена пошла в обратном направлении,ордер не закрывается,

ордер не закрывается, а модифицируется и понидается уровень stop loss'a. В итоге сделка становится убыточной, хотя открылась она в правильном направлении.

Предполагал, что от этого предохраняет проверка if( Bid-OrderOpenPrice()>Point*TrailingStop ), но видимо это не так. Что посоветуете?

看看在现成的不同尾随函数库中是如何做到的。你可以从中学习,也可以直接使用它......愿作者原谅我。虽然它们可以在公共领域获得...:)
附加的文件:
 
如何判断价格是向上还是向下跨越了某一水平,以便在它发生时打开?我使用的是价格而不是指标。谢谢你的反馈...