[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 580

 
Craft >>:

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


разность между лучшими ценами покупки (бид) и продажи (аск) в один и тот же момент времени - т.е спрос и предложение. Вы если на Форекс совершаете  сделку Buy то Вы приобретаете по по цене Bid, а когда закрываете ордер, то продаете по цене Ask, разница между Bid и Ask и будет величиной спреда, обычно от 2 до 6 пп для разных валют и в разных ДЦ
 

Думаю в коде это учтено, в ОрдерСенд бид с аском прописан:

//--------------------------------------------------------------- 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 на одно минимальное изменение стоимости.

А вообще лучше старших товарищей дождаться.

 

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

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

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

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

  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 ), но видимо это не так. Что посоветуете?

Посмотрите как сделано в уже готовой библиотеке функций различных трейлингов. Можете поучиться, иль сразу поиспользовать... Да простит меня автор. Хотя они и так лежат в открытом доступе... :)
Файлы:
 
Друзья! Подскажите как определить что цена пересекла определённый уровень снизу-вверх, либо сверху-вниз, дабы при происшествии сего факта открыться ? Используя именно цену, а не индикаторы. Спасибо, кто откликнется...
Причина обращения: