Scriverò un consulente gratuito per mql4 - pagina 3

 
Andrey Vaskin:
Per acquisire esperienza in questo settore, scriverò 25 EAs gratuitamente per le vostre idee e strategie interessanti

1.Guarda il prezzo cupFORTS.


2.Compra se entro 1 minuto la barra rossa era 3 volte* la barra blu. Vendi se è il contrario.


3.Chiudi una posizione che hai comprato - se la barra blu era 3 volte la barra rossa in 1 minuto. Chiudi una posizione che è stata venduta, se entro 1 minuto, la barra rossa era 3 volte maggiore della barra blu.


4) Il ciclo si ripete.

---


*Significa 3 volte o più.

"3 volte" e "1 minuto" devono essere impostati nei parametri del gufo.

È necessario anche uno StopLoss.

Un'immagine dello stack (volume di ordini di vendita/acquisto):

I volumi possono anche essere presi dalla panoramica del mercato:

 
Alexander Pavlov:

1.Guarda il vetro del prezzo.


2.Compra se entro 1 minuto la barra rossa era 3 volte* la barra blu. Vendi se è il contrario.


3. Chiudere una posizione acquistata - se la barra blu è 3 volte la barra rossa in 1 minuto. Chiudi una posizione che è stata venduta, se entro 1 minuto, la barra rossa era 3 volte maggiore della barra blu.


4) Il ciclo si ripete.

---


*Significa 3 volte o più.

"3 volte" e "1 minuto" devono essere impostati nei parametri del gufo.

È necessario anche uno StopLoss.

Un'immagine dello stack (volume di ordini di vendita/acquisto):

I volumi possono anche essere presi dalla panoramica del mercato:

Questo è MT5, l'autore ha chiesto solo compiti sotto MT4.
 
Vitaly Muzichenko:

Si tratta di stocastico, RSI MACD e altre cianfrusaglie chiamate oscillatori, disegnano la storia molto bene, ma non ho incontrato un solo Expert Advisor che abbia anche solo mantenuto un bilancio, figuriamoci fare un profitto.

Ma le persone che sperano in qualcosa sfornano costantemente questi indicatori inutili.

Penso che sia molto strano che passino da una versione di MT a un'altra per diversi anni. Chi ha bisogno di loro? Probabilmente solo per un codice di programma di esempio, ma la gente pensa che per commerciare su di loro ))))

Spazzatura? Ok, mostratemi un esempio di NON spazzatura. Inoltre, solo perché non avete visto qualcosa non significa che non esista.
 
Tapochun:
Spazzatura? Bene, fatemi un esempio di qualcosa che NON è spazzatura. Inoltre, solo perché non avete visto qualcosa non significa che non ci sia.
L'unica cosa che ho visto che non è spazzatura è sui modelli di candele.
 
Vitaly Muzichenko:
L'unica cosa che ho visto che non è drenante è sui pattern candlestick.
Anche il mio non è drenante, ed è la tua parola. e non ci sono schemi.
 
Leanid Aladzyeu:
Anche il mio non è a filo, e queste sono le tue parole. e non ci sono schemi.
Non intendevo la matematica in quel momento. Ho scritto sull'indicatore puro. Il tuo è buono.
 

aiuto per risolvere il problema

EA mette 4 ordini in sospeso

2 comprare e vendere stop

2 limite di acquisto e vendita

non so come intercambiare gli ordini in sospeso ma non so a quale distanza un ordine dovrebbe essere piazzato

è lo stesso con le posizioni di acquisto e di vendita stop

Dopo che tutti gli ordini sono stati piazzati, un nuovo ordine dovrebbe essere piazzato prima che un nuovo ordine si inneschi

Ho un sacco di lotti perdenti ma sarebbero meno se cambiassi gli ordini


//| iiiiiiiiiiiiiiiiiiiiiiii_buy_sell.mq4 |

//| |

//| |

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

extern int N = 100; // le baie e le vendite (contando separatamente) possono avere cento pezzi ciascuna


extern double Lots = 0.01; // lotto


extern int PROF = 100; // trawl stop, inizia con un profitto di cento pips

extern int TS = 200; // tiralo su stop dietro il prezzo

extern int STEP = 200; // distanza tra due ordini stop

extern int TP = 10000; //prendere l'ordine

extern int SL = 10000; // prendere ordini

extern bool Buy = false; // compra solo

extern bool Sell = true; // vendere solo

extern double PROSADKA = 0.5; // quando il capitale è uguale o inferiore a questa frazione del saldo

extern int magicbuy = 777;

extern int magicsell = 888;


int M;

doppio buystop_OP, sellstop_OP;

doppio selllimit_OP, buylimit_OP;


int start()

{

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


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

// vedere quali ordini abbiamo:

int comprare = 0,vendere = 0;

int buystop = 0,sellstop = 0;

int selllimit = 0,buylimit = 0;

int compra = 0, vende = 0;

int Totale = 0;

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

if(OrderType() == OP_BUYSTOP)

buystop = OrderTicket();

if(OrderType() == OP_BUYLIMIT)

buylimit = OrderTicket();

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

compra ++;

if(OrderType() == OP_SELLSTOP)

sellstop = OrderTicket();

if(OrderType() == OP_SELLLIMIT)

selllimit = OrderTicket();

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

vende ++;

Totale ++;

}

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

int LET = 0;

se (ContoPatrimonio()/SaldoConto() < PROSADKA)

LET = 1; // se il drawdown è alto - divieto di piazzare nuove posizioni

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

// impostazione di nuove transazioni :

if(LET == 0 && TimeCurrent() && M != iTime(Symbol(),1,0)) // una volta al minuto

{

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

}

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

// se l'ordine è più lontano di TS dal prezzo, trascinatelo più vicino al prezzo :

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

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

// se il profitto dell'ordine è più grande dello stop del PROF ed è più lontano di TS dal prezzo, traina questo stop dietro il prezzo:

for(i = 0; i < OrdiniTotali(); 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)

}

ritorno(0);

}

 

Il codice dovrebbe essere formattato così (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:

Per acquisire esperienza in questo settore, scriverò 25 EAs gratuitamente per le vostre idee e strategie interessanti

Rimangono solo 19 EAs

Buon pomeriggio, ho scritto di nuovo qui in un altro thread.


Ho una strategia per le opzioni binarie. In generale la sua essenza è la seguente: usando unamedia mobile con un periodo di 20 identifico il trend, usando l'ADX definisco la sua forza (di solito ad un valore visivo superiore a 25 lo definisco forte), usando l'analisi grafica definisco i punti di entrata (di solito mattina, stelle della sera, martelli e trailing wires, non guardo le doji con ombre simmetriche perché penso siano contraddittorie). Alla chiusura di una candela con il modello richiesto entro a ore 5 (ho controllato le statistiche manualmente su 6 mesi su D1: al massimo un segnale durante 6 mesi. H4 non è considerato a causa del diverso tempo di chiusura della geometria della candela in diversi broker).

In generale sulle statistiche ricevute da me in media ogni strumento 0,7-3% per un mese (nella transazione è stato sempre inserito 1% del deposito) ho scansionato manualmente 5 strumenti (e il broker che uso su opzioni ha 42 strumenti, manualmente tutte le statistiche per lavorare attraverso molto lavoro dovrà fare). Non prendo in considerazione l'influenza delle notizie sui risultati, posso postare in seguito dei file dal terminale con i miei segni, dove sono entrato, a che ora della scadenza ho fatto profitto e dove ho fatto perdita ecc. Il mio broker utilizza un terminale MT4. Forse qualcuno ha qualche suggerimento su come migliorare questa strategia?

Nella descrizione ho descritto l'idea generale, sarebbe bello se l'Expert Advisor fosse in grado di cambiare automaticamente il valore della transazione per ogni periodo di tempo (per esempio una volta al mese).

 
Adelaur:
A volte il cursore salta nel campo delle citazioni quando si risponde e non ne esce. Come affrontarlo:Forum: il cursore salta nella citazione quando si risponde