[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 580

 
Craft >>:

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


A diferença entre os melhores preços de compra (bid) e venda (ask) no mesmo momento no tempo - ou seja, oferta e demanda. Se você fizer uma operação de Compra em forex, você compra ao preço Bid, e ao fechar o pedido, você vende ao preço Ask, a diferença entre Bid e Ask e será o valor do spread, geralmente de 2 a 6 pips para diferentes moedas e em diferentes corretoras
 

Acho que isto está contabilizado no código, em OrderSend the bid with the ask is prescrito:

//--------------------------------------------------------------- 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 >>:

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

O futuro não é forex.

Como o spread é levado em conta?

Geralmente é deduzido.

 
Swetten >>:

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

Estou vendo, decidi preencher a lacuna. Então este código não pode ser adaptado para futuros?
 
Você pode. Você precisa saber o preço do ponto e o spread.
 

OK companheiros - ajuda. Aqui está a especificação do contrato:

O que/como devo considerar?

 

O custo do tique e o tamanho do tique - é aí que reside o problema.

O que você recebe é: Um "pip" é cinco carrapatos. Cinco carrapatos (um "pip" em termos cambiais) custam 3, grosso modo, rublos.

Ou seja, a discretização (certo?) não é 1:1, mas 1:5 por uma mudança mínima de preço.

Em geral, é melhor esperar pelos camaradas mais velhos.

 

Boa tarde. Problema com o Trailing Stop.

Ordens não corretamente modificadas. Acontece que o nível de stop loss segue o preço independentemente do movimento de preços.

Digamos que abrimos uma ordem de compra. O preço cresce, o trailing stop dispara e o stop loss é puxado para cima. Então o preço se move na direção oposta e a ordem não é fechada,

O pedido não é fechado e é modificado e o nível de stop loss é diminuído. Como resultado, o negócio torna-se não lucrativo, embora tenha sido aberto na direção certa.

  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);
                      }
                 }
              }
           }           
           
        }     

Suponho que isto seja evitado verificando se( Bid-OrderOpenPrice()>Point*TrailingStop) mas parece estar errado. O que você aconselha?

 
vanson >>:

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

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

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

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

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

Veja como isso é feito na biblioteca já pronta de diferentes funções de rastreamento. Você pode aprender com ele, ou pode usá-lo imediatamente... Que o autor me perdoe. Embora estejam disponíveis no domínio público... :)
Arquivos anexados:
 
Como você pode saber se o preço cruzou um certo nível para cima ou para baixo, a fim de abrir quando isso aconteceu? Eu estou usando o preço e não os indicadores. Obrigado por seu feedback...