[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 580

 
Craft >>:

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


La différence entre les meilleurs prix d'achat (bid) et de vente (ask) au même moment, c'est-à-dire l'offre et la demande. Si vous effectuez une opération d'achat sur le marché des changes, vous achetez au cours acheteur et, lorsque vous fermez l'ordre, vous vendez au cours vendeur. La différence entre le cours acheteur et le cours vendeur correspond à la valeur de l'écart, généralement compris entre 2 et 6 pips pour différentes devises et dans différentes sociétés de courtage.
 

Je pense que cela est pris en compte dans le code, dans OrderSend l'offre avec la demande est prescrite :

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

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

Les contrats à terme ne sont pas des contrats de change.

Comment l'écart est-il pris en compte ?

Elle est généralement déduite.

 
Swetten >>:

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

Je vois, j'ai décidé de combler le vide. Ce code ne peut donc pas être adapté pour les futures ?
 
Vous pouvez. Vous devez connaître le prix du point et le spread.
 

OK, les gars, à l'aide. Voici le cahier des charges du contrat :

Que/comment dois-je prendre en compte ?

 

Le coût de la tique et la taille de la tique - c'est là que réside le problème.

Je veux dire, ce que vous obtenez est : Un "pip" correspond à cinq ticks. Cinq ticks (un "pip" en termes de forex) coûtent 3 roubles, en gros.

Autrement dit, la discrétisation (n'est-ce pas ?) n'est pas de 1:1, mais de 1:5 pour une variation minimale de la valeur.

En général, il est préférable d'attendre les camarades plus âgés.

 

Bon après-midi. Problème avec le Trailing Stop.

Des ordres modifiés pas tout à fait correctement. Il s'avère que le niveau de stop loss suit le prix indépendamment de son mouvement.

Disons que nous ouvrons un ordre d'achat. Le prix augmente, le trailing stop se déclenche et le stop loss est remonté. Ensuite, le prix évolue dans la direction opposée et l'ordre n'est pas clôturé,

L'ordre n'est pas fermé, il est modifié et le niveau stop loss est abaissé. En conséquence, l'opération n'est plus rentable, bien qu'elle ait été lancée dans la bonne direction.

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

Je pensais que cela était évité par le contrôle if( Bid-OrderOpenPrice()>Point*TrailingStop) mais il semble que ce soit faux. Que conseillez-vous ?

 
vanson >>:

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

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

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

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

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

Voyez comment cela se passe dans la bibliothèque prête à l'emploi de différentes fonctions de suivi. Vous pouvez en tirer des enseignements ou l'utiliser directement... Que l'auteur me pardonne. Bien qu'ils soient disponibles dans le domaine public... :)
Dossiers :
 
Comment savoir si le prix a franchi un certain niveau à la hausse ou à la baisse, afin d'ouvrir quand cela s'est produit ? J'utilise le prix et non les indicateurs. Merci pour vos commentaires...