Je vais écrire un conseiller mql4 gratuit - page 3

 
Andrey Vaskin:
Pour acquérir de l'expérience dans ce domaine, j'écrirai gratuitement 25 EA pour vos idées et stratégies intéressantes.

1. regardez le prix de la tasseFORTS.


2.acheter si dans une minute la barre rouge est 3 fois* la barre bleue. Vendez si c'est le contraire.


3. fermer une position que vous avez achetée - si la barre bleue est 3 fois supérieure à la barre rouge en 1 minute. Fermez une position qui a été vendue, si dans une minute, la barre rouge était 3 fois plus grande que la barre bleue.


4) Le cycle se répète.

---


*Signifie 3 fois ou plus.

"3 fois" et "1 minute" doivent être définis dans les paramètres du hibou.

Un StopLoss est également nécessaire.

Une image de la pile (volume des ordres de vente/achat) :

Les volumes peuvent également être extraits de l'aperçu du marché :

 
Alexander Pavlov:

1. regardez le verre de prix.


2.acheter si dans une minute la barre rouge est 3 fois* la barre bleue. Vendez si c'est le contraire.


3.fermer une position achetée - si la barre bleue est 3 fois supérieure à la barre rouge en 1 minute. Fermez une position qui a été vendue, si dans une minute, la barre rouge était 3 fois plus grande que la barre bleue.


4) Le cycle se répète.

---


*Signifie 3 fois ou plus.

"3 fois" et "1 minute" doivent être définis dans les paramètres du hibou.

Un StopLoss est également nécessaire.

Une image de la pile (volume des ordres de vente/achat) :

Les volumes peuvent également être extraits de l'aperçu du marché :

Il s'agit de MT5, l'auteur n'a demandé que des tâches sous MT4.
 
Vitaly Muzichenko:

Ils parlent de stochastiques, de RSI, de MACD et d'autres oscillateurs de pacotille, ils dessinent l'histoire très joliment, mais je n'ai pas rencontré un seul conseiller expert qui ait tenu un équilibre, sans parler de faire des bénéfices.

Mais les gens continuent, je l'espère, à pondre des choses avec ces indicateurs inutiles.

Je trouve très étrange qu'ils passent d'une version de MT à une autre pendant plusieurs années. Qui en a besoin ? Probablement juste pour un exemple de code de programme, mais les gens pensent que pour faire du commerce avec eux )))).

De la camelote ? Ok, montrez-moi un exemple de PAS d'ordures. De plus, ce n'est pas parce que vous n'avez pas vu une chose qu'elle n'existe pas.
 
Tapochun:
De la camelote ? Eh bien, donnez-moi un exemple de quelque chose qui n'est PAS un déchet. De plus, ce n'est pas parce que vous n'avez pas vu une chose qu'elle n'existe pas.
La seule chose que j'ai vue qui n'est pas de la camelote est sur les modèles de chandeliers.
 
Vitaly Muzichenko:
La seule chose que j'ai vue qui n'est pas drainante, c'est sur les modèles de chandeliers.
Le mien n'est pas drainant non plus, et c'est votre mot. Et il n'y a pas de modèle.
 
Leanid Aladzyeu:
Le mien n'est pas à fleur de peau non plus, et ce sont vos mots. et il n'y a pas de modèle.
Je ne pensais pas aux mathématiques pour le moment. J'ai écrit sur l'indicateur pur. Le vôtre est bon.
 

aidez à réparer

EA met 4 ordres en attente

2 stop d'achat et de vente

2 limite d'achat et de vente

je ne sais pas comment interchanger les ordres en attente mais je ne sais pas à quelle distance un ordre doit être placé

il en est de même pour les positions d'achat et les arrêts de vente

Une fois que toutes les commandes ont été passées, il faut en placer une nouvelle avant de déclencher une nouvelle commande.

j'ai beaucoup de lots perdants mais ils seraient moins si je changeais de commande


//| iiiiiiiiiiiiiiii_buy_sell.mq4 |

//| |

//| |

//+------------------------------------------------------------------+

extern int N = 100 ; // les baies et les vendeurs (comptés séparément) peuvent avoir cent pièces chacun.


extern double Lots = 0.01 ; // lot


extern int PROF = 100 ; // trawl stop, commencer avec un profit de cent pips

extern int TS = 200 ; // tirer sur le stop derrière le prix

extern int STEP = 200 ; // distance entre deux ordres stop

extern int TP = 10000 ; //prise de commande

extern int SL = 10000 ; // prendre les commandes

extern bool Buy = false ; // acheter seulement

extern bool Sell = true ; // vente uniquement

extern double PROSADKA = 0.5 ; // lorsque les capitaux propres sont égaux ou inférieurs à cette fraction du solde

extern int magicbuy = 777 ;

extern int magicsell = 888 ;


int M ;

double buystop_OP, sellstop_OP ;

double selllimit_OP, buylimit_OP ;


int start()

{

// ---------------------------------------------------------------------


// ---------------------------------------------------------------------

// voir quelles commandes nous avons :

int buy = 0,sell = 0 ;

int buystop = 0,sellstop = 0 ;

int selllimit = 0,buylimit = 0 ;

int buys = 0, sells = 0 ;

int Total = 0 ;

for(int i = 0 ; i < OrdersTotal() ; i ++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ;

if(OrderMagicNumber() != magicbuy && OrderMagicNumber() != magicsell) continuer ;

si(OrderType() == OP_BUYSTOP)

buystop = OrderTicket() ;

si(OrderType() == OP_BUYLIMIT)

buylimit = OrderTicket() ;

if(OrderType() == OP_BUYSTOP || OrderType() == OP_BUYLIMIT || OrderType() == OP_BUY)

achète ++ ;

if(OrderType() == OP_SELLSTOP)

sellstop = OrderTicket() ;

if(OrderType() == OP_SELLLIMIT)

selllimit = OrderTicket() ;

if(OrderType() == OP_SELLSTOP || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELL )

vend ++ ;

Total ++ ;

}

// ---------------------------------------------------------------------

int LET = 0 ;

si (AccountEquity()/AccountBalance() < PROSADKA)

LET = 1 ; // si le drawdown est élevé - interdiction de placer de nouvelles positions

// ---------------------------------------------------------------------

// établissement de nouvelles transactions :

if(LET == 0 && TimeCurrent() && M != iTime(Symbol(),1,0)) // une fois par minute

{

si ( buystop < 1 && buys < N && Buy == true)

{

buystop_OP = NormalizeDouble(Ask+STEP*Point,Digits) ;

buystop = OrderSend(Symbol(),OP_BUYSTOP,Lots,buystop_OP,10,buystop_OP-SL*Point,buystop_OP+TP*Point,NULL,magicbuy,0,Blue) ;

}

si ( buylimit < 1 && buys < N && Buy == True)

{

buylimit_OP = NormalizeDouble(Ask-STEP*Point,Digits) ;

buylimit = OrderSend(Symbol(),OP_BUYLIMIT,Lots,buylimit_OP,100,buylimit_OP-SL*Point,buylimit_OP+TP*Point,NULL,magicbuy,0,Red) ;

}

si ( sellstop < 1 && sells < N && Sell == true)

{

sellstop_OP = NormalizeDouble(Bid-STEP*Point,Digits) ;

sellstop = OrderSend(Symbol(),OP_SELLSTOP,Lots,sellstop_OP,10,sellstop_OP+SL*Point,sellstop_OP-TP*Point,NULL,magicsell,0,Red) ;

}

si ( selllimit < 1 && sells < N && Sell == True)

{

selllimit_OP = NormalizeDouble(Bid+STEP*Point,Digits) ;

selllimit = OrderSend(Symbol(),OP_SELLLIMIT,Lots,selllimit_OP,100,selllimit_OP+SL*Point,selllimit_OP-TP*Point,NULL,magicsell,0,Blue) ;

}

M = iTime(Symbol(),1,0) ;

}

// ---------------------------------------------------------------------

// si l'ordre est plus éloigné que TS du prix, rapprochez-le du prix :

si (OrderSelect(buystop,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_BUYSTOP && OrderOpenPrice() > Ask + TS*Point)

OrderModify(buystop,Ask + TS*Point,Ask + TS*Point-SL*Point,Ask + TS*Point+TP*Point,0,DeepSkyBlue) ;

si (OrderSelect(sellstop,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_SELLSTOP && OrderOpenPrice() < Bid - TS*Point)

OrderModify(sellstop,Bid - TS*Point,Bid - TS*Point+SL*Point,Bid - TS*Point-TP*Point,0,Orange) ;

si (OrderSelect(selllimit,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_SELLLIMIT && OrderOpenPrice() > Bid + TS*Point)

OrderModify(selllimit,Bid + TS*Point,Bid + TS*Point+SL*Point,Bid + TS*Point-TP*Point,0,DeepSkyBlue) ;

si (OrderSelect(buylimit,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_BUYLIMIT && OrderOpenPrice() < Ask - TS*Point)

OrderModify(buylimit,Ask - TS*Point,Ask - TS*Point-SL*Point,Ask - TS*Point+TP*Point,0,Orange) ;

// ---------------------------------------------------------------------

// si le profit de l'ordre est plus grand que le stop PROF et est plus éloigné que TS du prix, traîner ce stop derrière le prix :

for(i = 0 ; i < OrdersTotal() ; i ++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ;

si (OrderType() == OP_BUY && (Ask - OrderOpenPrice())/Point > PROF && OrderStopLoss() < NormalizeDouble(Ask - TS*Point,Digits))

OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask - TS*Point,Digits),OrderTakeProfit(),0,Blue) ;

si (OrderType() == OP_SELL && (OrderOpenPrice() - Bid)/Point > PROF && OrderStopLoss() > NormalizeDouble(Bid + TS*Point,Digits))

OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid + TS*Point,Digits),OrderTakeProfit(),0,Red)

}

retour(0) ;

}

 

Le code doit être formaté comme suit (SRC) :

//|                                   iiiiiiiiiiiiiiiii_buy_sell.mq4 |

//|                                                                  |

//|                                                                  |

//+------------------------------------------------------------------+

extern int N = 100;       // баев и сэллов (считаем отдельно) разрешаем по стока штук иметь



extern double Lots = 0.01;  // лот



extern int PROF = 100;    // тралить стоп начнем с профита во стока пипсов

extern int TS = 200;      // тащить его станем на стока сзади пип за ценой

extern int STEP = 200;    // расстояние меджу отложками

extern int TP = 10000;     // тейк ордеров

extern int SL = 10000;     // тейк ордеров

extern bool Buy = false;    // только покупать

extern bool Sell = true;   // только продавать

extern double PROSADKA = 0.5;   // когда эквити равно или менее вот такой части от баланса

extern int magicbuy = 777;

extern int magicsell = 888;



int M;

double buystop_OP, sellstop_OP;

double selllimit_OP, buylimit_OP;



int start()

  {

             // ---------------------------------------------------------------------

         



             // ---------------------------------------------------------------------

             // смотрим, какие ордера у нас есть:

                 int buy = 0,sell = 0;

                 int buystop = 0,sellstop = 0;

                 int selllimit = 0,buylimit = 0;

                 int buys = 0, sells = 0;

                 int Total = 0;

                 for(int i = 0; i < OrdersTotal(); i ++)

                   {

                     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

                        if(OrderMagicNumber() != magicbuy && OrderMagicNumber() != magicsell) continue;

      

                        

                        

                           if(OrderType() == OP_BUYSTOP)

                              buystop = OrderTicket();

                                

                           if(OrderType() == OP_BUYLIMIT)

                              buylimit = OrderTicket();

                              

                           if(OrderType() == OP_BUYSTOP || OrderType() == OP_BUYLIMIT || OrderType() == OP_BUY)   

                              buys ++;

                           

                           if(OrderType() == OP_SELLSTOP)

                              sellstop = OrderTicket();

                              

                           if(OrderType() == OP_SELLLIMIT)

                              selllimit = OrderTicket();

                              

                            if(OrderType() == OP_SELLSTOP || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELL )

                              sells ++;    

                        

                        Total ++;       

                   }

             

             

           

             // ---------------------------------------------------------------------

                 int LET = 0;

                 if (AccountEquity()/AccountBalance() < PROSADKA)

                    LET = 1;  // если просадки до фига - запрет на выставление новых отложек

           

             // --------------------------------------------------------------------- 

             // выставление отложек :

             if(LET == 0 && TimeCurrent() && M != iTime(Symbol(),1,0)) // раз в минуту

               {   

                 

                 if ( buystop < 1 && buys < N && Buy == true)

                     {

                        buystop_OP = NormalizeDouble(Ask+STEP*Point,Digits);

                        buystop = OrderSend(Symbol(),OP_BUYSTOP,Lots,buystop_OP,10,buystop_OP-SL*Point,buystop_OP+TP*Point,NULL,magicbuy,0,Blue);

                     }

                     

                if ( buylimit < 1 && buys < N && Buy == True)

                     {

                        buylimit_OP = NormalizeDouble(Ask-STEP*Point,Digits);

                        buylimit = OrderSend(Symbol(),OP_BUYLIMIT,Lots,buylimit_OP,100,buylimit_OP-SL*Point,buylimit_OP+TP*Point,NULL,magicbuy,0,Red);     

                     }

                     

                 if ( sellstop < 1 && sells < N && Sell == true)

                     {

                        sellstop_OP = NormalizeDouble(Bid-STEP*Point,Digits);

                        sellstop = OrderSend(Symbol(),OP_SELLSTOP,Lots,sellstop_OP,10,sellstop_OP+SL*Point,sellstop_OP-TP*Point,NULL,magicsell,0,Red);

                     }

                

                if ( selllimit < 1 && sells < N && Sell == True)

                     {

                       selllimit_OP = NormalizeDouble(Bid+STEP*Point,Digits);

                       selllimit = OrderSend(Symbol(),OP_SELLLIMIT,Lots,selllimit_OP,100,selllimit_OP+SL*Point,selllimit_OP-TP*Point,NULL,magicsell,0,Blue);

                     }

                     

                

                

                 M = iTime(Symbol(),1,0);

               }

             

             // --------------------------------------------------------------------- 

             // еси отложки дальше чем TS от цены, подтаскиваем их поближе :

             if (OrderSelect(buystop,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_BUYSTOP && OrderOpenPrice() > Ask + TS*Point)

                OrderModify(buystop,Ask + TS*Point,Ask + TS*Point-SL*Point,Ask + TS*Point+TP*Point,0,DeepSkyBlue);

             

             if (OrderSelect(sellstop,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_SELLSTOP && OrderOpenPrice() < Bid - TS*Point)

                OrderModify(sellstop,Bid - TS*Point,Bid - TS*Point+SL*Point,Bid - TS*Point-TP*Point,0,Orange);

             

             if (OrderSelect(selllimit,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_SELLLIMIT && OrderOpenPrice() > Bid + TS*Point)

                OrderModify(selllimit,Bid + TS*Point,Bid + TS*Point+SL*Point,Bid + TS*Point-TP*Point,0,DeepSkyBlue);

             

             if (OrderSelect(buylimit,SELECT_BY_TICKET,MODE_TRADES) == true && OrderType() == OP_BUYLIMIT && OrderOpenPrice() < Ask - TS*Point)

                OrderModify(buylimit,Ask - TS*Point,Ask - TS*Point-SL*Point,Ask - TS*Point+TP*Point,0,Orange);

            

             // --------------------------------------------------------------------- 

             // еси профит ордера больше PROF  стоп его дальше чем TS от цены, тралим этот стоп за ценой :

             for(i = 0; i < OrdersTotal(); i ++)

                   {

                     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

                     

                        if (OrderType() == OP_BUY && (Ask - OrderOpenPrice())/Point > PROF && OrderStopLoss() < NormalizeDouble(Ask - TS*Point,Digits))

                           OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask - TS*Point,Digits),OrderTakeProfit(),0,Blue);

             

                        if (OrderType() == OP_SELL && (OrderOpenPrice() - Bid)/Point > PROF && OrderStopLoss() > NormalizeDouble(Bid + TS*Point,Digits))

                           OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid + TS*Point,Digits),OrderTakeProfit(),0,Red);

             

                   }

             

          

   return(0);

  }
 
Andrey Vaskin:

Pour acquérir de l'expérience dans ce domaine, j'écrirai gratuitement 25 EA pour vos idées et stratégies intéressantes.

Il ne reste que 19 EA

Bonjour, j'ai écrit dans un autre fil ici encore.


J'ai une stratégie pour les options binaires. En général, son essence est la suivante : à l'aide d'unemoyenne mobile avec une période de 20, j'identifie la tendance, à l'aide de l'ADX, je définis sa force (généralement à une valeur visuelle supérieure à 25, je la définis comme forte), à l'aide de l'analyse graphique, je définis les points d'entrée (généralement les étoiles du matin, du soir, les marteaux et les fils de traçage, je ne regarde pas les doji avec des ombres symétriques car je pense qu'ils sont contradictoires). A la fermeture d'une bougie avec le modèle requis j'entre à 5 heures (j'ai vérifié les statistiques manuellement sur 6 mois sur D1 : au mieux un signal pendant 6 mois. H4 n'est pas pris en compte en raison de l'heure de clôture différente de la géométrie de la bougie chez différents courtiers).

En général, sur les statistiques reçues par moi sur la moyenne de chaque outil 0,7-3% pour un mois (dans la transaction a toujours été entré 1% du dépôt) J'ai manuellement scanné 5 outils (et le courtier que j'utilise sur les options a 42 outils, manuellement toutes les statistiques de travailler à travers beaucoup de travail devra faire). Je ne tiens pas compte de l'influence des nouvelles sur les résultats. Je peux poster plus tard des fichiers à partir du terminal avec mes marques dessus, où je suis entré, à quel moment de l'expiration j'ai fait des profits et où j'ai perdu, etc. Mon courtier utilise un terminal MT4. Peut-être quelqu'un a-t-il des suggestions pour améliorer cette stratégie ?

Dans la description, j'ai décrit l'idée générale, il serait bien que le Conseiller Expert soit capable de changer automatiquement la valeur de la transaction pour chaque période de temps (par exemple une fois par mois).

 
Adelaur:
Il arrive que le curseur saute dans le champ des citations lors d'une réponse et qu'il n'en ressorte pas. Comment y remédier :Forum : le curseur saute dans la citation lorsque vous répondez.