Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 515

 
artmedia70:
Pour ce genre de questions, vous devriez consulter le fil de discussion sur la construction du 610e, où se trouvent les développeurs.


Merci, parti.
 
Zolotai:

Oui, mais, tu sais. Il faudrait que je fouille dans le code de quelqu'un d'autre. Ce que je ne comprends pas, et ça prend beaucoup de temps Pour le savoir.

Commencez par le Tutoriel, puis la Documentation, etc. Il n'y a pas d'autre moyen ! Et vous serez en mesure de comprendre le code d'autres personnes et d'apprendre beaucoup d'elles ! Les conseils n'enseignent pas, ils corrompent !
 

Question sur la visualisation.

Je crée un ordre en attente avec une commande comme celle-ci

OrderSend(Symbol(), OP_BUYLIMIT, lot, prix, 3, 0, take_profit, 999, 999, 0, Blue) ;

Dans le testeur, nous pouvons voir tout son parcours sous forme de flèches : ordre en attente ------> achat --------------> vente avec prise de profit

Cependant, seule la flèche bleue apparaît lors du passage d' un ordre et nous ne pouvons que deviner les achats et les prises de bénéfices dans les journaux. Y a-t-il un moyen de voir les flèches dans le graphique réel de la même manière que dans le testeur ?

 
Denis111:

Question sur la visualisation.

Je crée un ordre en attente par une commande du type suivant

OrderSend(Symbol(), OP_BUYLIMIT, lot, prix, 3, 0, take_profit, 999, 999, 0, Blue) ;

Dans le testeur, les flèches montrent tout son cheminement : ordre en attente ------> achat --------------> vente au Take Profit

Dans la vie réelle, seule la flèche bleue apparaît lorsqu'un ordre est passé et nous ne pouvons que deviner les achats et les prises de bénéfices dans les journaux. Existe-t-il un moyen de voir les flèches dans le graphique réel de la même manière que dans le testeur de stratégie ?


Pour ce faire, ouvrez sans TP, puis indiquez une couleur lors de la modification également, et vous aurez un triangle de fermeture avec une ligne pointillée à partir de l'ouverture elle-même !
 

Bonjour, j'ai écrit un script simple pour ouvrir un ordre d' achat en attente. Le script fonctionne avec succès sur un compte de démonstration, mais sur un compte réel il génère l'erreur : 133, ce qui signifie que le trading n'est pas autorisé. Pouvez-vous me dire quel est le problème ? Quelle peut être la raison de cette erreur ?


extern int orderSize = 50 ;
extern int SL = 20 ;
extern int TP = 20 ;

int start()
{
double correctPoint = 0.0001 ;
double priceOpen = iOpen( Symbol(), PERIOD_M5, 0 ) ; //écrit le prix d'ouverture de la barre de cinq minutes actuelle dans la variable priceOpen

double priceBuy = priceOpen + (double)orderSize * correctPoint ; //le prix auquel l'ordre en attente est placé
double priceTP = priceBuy + (double)TP * correctPoint ;
double priceSL = priceBuy - (double)SL * correctPoint ;

while( !IsTradeAllowed() )
Sleep( 100 ) ;
int codeError = OrderSend( Symbol(), OP_BUYSTOP, 1.5, priceBuy, 100, priceSL, priceTP ) ;
if( codeError == -1 )
Alert ("BuyStop error : ", GetLastError() ) ;

return(0) ;
}//±
 
Et là, il s'avère qu'il y a ceux qui remplissent la moitié du forum avec une seule question.
 

Je veux faire un simple script owl..... lorsque le placement du 1er ordre SL et TP donne l'erreur 130, et où insérer le code avec Tralingstop ? ???

//+------------------------------------------------------------------+
//| установка мышкой отложенных ордеров                              |
//|                               Copyright © 2012, Хлыстов Владимир |
//|                                                cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Хлыстов Владимир"
#property link      "cmillion@narod.ru"
#property show_inputs

//--------------------------------------------------------------------
extern int     Stoploss          = 0,     //стоплосс ордеров
               Takeprofit        = 0;     //тейкпрофит ордеров
extern double  Lot               = 0.1;   //лот
extern int     Magic             = 0;     //уникальный номер ордеров этого советника
extern bool    comment           = true;  //выводить информацию на экран
//--------------------------------------------------------------------
int start()
{
   int n;
   double SL,TP;
   double Price = NormalizeDouble(WindowPriceOnDropped(),Digits);
   string txt=StringConcatenate("Скрипт выставления рыночного ордера, старт ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
   while(true)
   {
      RefreshRates();
      if(Price>Ask) 
      {
         if (Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Point,Digits); else TP=0;
         if (Stoploss!=0)   SL = NormalizeDouble(Ask - Stoploss   * Point,Digits); else SL=0;
         if (OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),0,SL,TP,"StopOrders",Magic,0,CLR_NONE)!=-1)
              {txt = StringConcatenate(txt,"\nВыставлен BUY ",DoubleToStr(Ask,Digits));break;}
         else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," выставления BUY ");
      }
      if(Price<Bid) 
      {
         if (Takeprofit!=0) TP = NormalizeDouble(Bid - Takeprofit * Point,Digits); else TP=0;
         if (Stoploss!=0)   SL = NormalizeDouble(Bid + Stoploss   * Point,Digits); else SL=0;
         if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),0,SL,TP,"StopOrders",Magic,0,CLR_NONE)!=-1)
              {txt = StringConcatenate(txt,"\nВыставлен SELL ",DoubleToStr(Bid,Digits));break;}
         else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," выставления SELL ");
      }
      if (comment) Comment("Попытка ",n," ",txt);
      n++;
      if (n>10) break;
   }
   if (comment) Comment(txt,"\nСкрипт закончил свою работу ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
   return(0);
}
//--------------------------------------------------------------------
 
MyTHblu:

Je veux faire un simple script owl..... lorsque le placement du 1er ordre SL et TP donne l'erreur 130, et où insérer le code avec Tralingstop ? ???


130 - les arrêts ont tort. Relisez attentivement les conditions de votre société de courtage, puis relisez-les régulièrement pour ne pas les oublier. Pourquoi vous aimez tous autant Alpari, c'est comme du miel...


Le code de chalutage peut être copié dans le départ, ou vous pouvez utiliser une fonction séparée, toujours à partir du départ.

 
evillive:

130 - les arrêts sont faux. Lisez une nouvelle fois les conditions commerciales de votre courtier et relisez-les régulièrement pour ne pas les oublier. Pourquoi vous aimez tous autant Alpari, c'est comme du miel...


Le code de chalutage peut être copié dans le départ, ou vous pouvez utiliser une fonction séparée, toujours à partir du départ.


Comme il a pris cette chouette sur CodeBase, il peut aussi en choisir une autre avec le chalut. Et dans Alps, il faut ouvrir sans SL et TP et modifier immédiatement l'ordre en les plaçant. Pourquoi ne prennent-ils pas la peine de lire les conditions générales du courtier, les règles du forum, l'aide MT4 et les informations écrites et discutées des centaines de fois ici sur le site, d'utiliser la recherche ici et sur Google ? Avant de poser des questions de base ?
 

comment connecter les codes....il y a un stop trading... Je ne l'ai inséré nulle part, peut-être qu'il y a une erreur, lors de la compilation il est dit 'if' - les expressions ne sont pas autorisées sur un scop global, cela semble signifier qu'une erreur avant if.... n'est-ce pas ?

extern bool UseTrailing = true;
extern int lMinProfit = 30;
extern int sMinProfit = 30;
extern int lTrailingStop = 15;
extern int sTrailingStop = 15;
extern int lTrailingStep = 5;
extern int sTrailingStep = 5;
//-----

if (UseTrailing) TrailingPositions();  

void TrailingPositions() 
{
  int cnt = OrdersTotal();

  for (int i=0; i<cnt; i++) {
        if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
        if (OrderSymbol() != Symbol()) continue;                

        if (OrderType() == OP_BUY) {
        if (Bid-OrderOpenPrice() > lMinProfit*Point) {
                if (OrderStopLoss() < Bid-(lTrailingStop+lTrailingStep-1)*Point) {
                OrderModify(OrderTicket(), OrderOpenPrice(), Bid-lTrailingStop*Point, OrderTakeProfit(), 0, Blue);
                }
        }
        }

        if (OrderType() == OP_SELL) {
        if (OrderOpenPrice()-Ask > sMinProfit*Point) {
                if (OrderStopLoss() > Ask+(sTrailingStop+sTrailingStep-1)*Point || OrderStopLoss() == 0) {
                OrderModify(OrderTicket(), OrderOpenPrice(), Ask+sTrailingStop*Point, OrderTakeProfit(), 0, Blue);
                }
        }
        }
  }
  
}
Raison: