[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 580

 
Craft >>:

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


La diferencia entre los mejores precios de compra (bid) y de venta (ask) en el mismo momento, es decir, la oferta y la demanda. Si usted hace una operación de compra en forex, usted compra al precio Bid, y cuando cierra la orden, vende al precio Ask, la diferencia entre el Bid y el Ask y será el valor del spread, generalmente de 2 a 6 pips para diferentes monedas y en diferentes compañías de corretaje
 

Creo que esto está contemplado en el código, en OrderSend se prescribe la oferta con la demanda:

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

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

Los futuros no son forex.

¿Cómo se tiene en cuenta el diferencial?

Normalmente se deduce.

 
Swetten >>:

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

Ya veo, decidí llenar el vacío. Entonces, ¿este código no se puede adaptar a los futuros?
 
Puedes hacerlo. Es necesario conocer el precio del punto y el diferencial.
 

OK compañeros - ayuda. Aquí está el pliego de condiciones del contrato:

¿Qué/cómo debo tener en cuenta?

 

El coste de la garrapata y el tamaño de la garrapata... ahí está el problema.

Es decir, lo que obtienes es: Un "pip" son cinco ticks. Cinco ticks (un "pip" en términos de divisas) cuestan 3, aproximadamente, rublos.

Es decir, la discretización (¿verdad?) no es 1:1, sino 1:5 para un cambio mínimo de valor.

En general, es mejor esperar a los compañeros de más edad.

 

Buenas tardes. Problema con el Trailing Stop.

Órdenes no modificadas del todo correctamente. Resulta que el nivel de stop loss sigue al precio independientemente del movimiento del mismo.

Digamos que abrimos una orden de compra. El precio crece, el trailing stop se dispara y el stop loss se eleva. Entonces el precio se mueve en la dirección opuesta y la orden no se cierra,

La orden no se cierra; se modifica y se baja el nivel de stop loss. El resultado es que la operación deja de ser rentable, aunque se abrió en la dirección correcta.

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

Suponía que esto se evitaba con la comprobación if( Bid-OrderOpenPrice()>Point*TrailingStop) pero parece que no es así. ¿Qué me aconseja?

 
vanson >>:

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

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

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

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

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

Vea cómo se hace en la biblioteca lista de diferentes funciones de arrastre. Puedes aprender de él, o puedes usarlo directamente... Que el autor me perdone. Aunque están disponibles en el dominio público... :)
Archivos adjuntos:
 
¿Cómo se puede saber si el precio ha cruzado un determinado nivel al alza o a la baja, para abrir cuando ha ocurrido? Estoy utilizando el precio y no los indicadores. Gracias por sus comentarios...
Razón de la queja: