Escreverei um assessor mql4 gratuito - página 3

 
Andrey Vaskin:
Para ganhar experiência nesta área, vou escrever 25 EAs gratuitamente para suas idéias e estratégias interessantes

1.olhe para o preço cupFORTS.


2. comprar se dentro de 1 minuto a barra vermelha fosse 3 vezes* a barra azul. Vender se for o oposto.


3.Feche uma posição comprada - se a barra azul fosse 3 vezes a barra vermelha em 1 minuto. Feche uma posição que tenha sido vendida, se dentro de 1 minuto, a barra vermelha fosse 3 vezes maior do que a barra azul.


4) O ciclo se repete.

---


*Means 3 vezes ou mais.

"3 vezes" e "1 minuto" devem ser definidos nos parâmetros das corujas.

Um StopLoss também é necessário.

Uma foto da pilha (volume de pedidos de compra/venda):

Os volumes também podem ser retirados da visão geral do mercado:

 
Alexander Pavlov:

1.olhe para o preço do vidro.


2. comprar se dentro de 1 minuto a barra vermelha fosse 3 vezes* a barra azul. Vender se for o oposto.


3.Feche uma posição comprada - se a barra azul for 3 vezes a barra vermelha em 1 minuto. Feche uma posição que tenha sido vendida, se dentro de 1 minuto, a barra vermelha fosse 3 vezes maior do que a barra azul.


4) O ciclo se repete.

---


*Means 3 vezes ou mais.

"3 vezes" e "1 minuto" devem ser definidos nos parâmetros das corujas.

Um StopLoss também é necessário.

Uma foto da pilha (volume de pedidos de compra/venda):

Os volumes também podem ser retirados da visão geral do mercado:

Este é o MT5, o autor só pediu tarefas sob MT4.
 
Vitaly Muzichenko:

Eles são sobre estocásticos, RSI MACD e outras porcarias chamadas osciladores, eles desenham a história muito bem, mas eu não conheci um único Expert Advisor que tenha sequer mantido um equilíbrio, muito menos que tenha tido lucro.

Mas as pessoas que esperam por algo estão constantemente produzindo estes indicadores inúteis.

Acho muito estranho que eles venham de uma versão da MT para outra durante vários anos. Quem precisa deles? Provavelmente apenas para uma amostra do código do programa, mas as pessoas pensam que para negociar com eles ))))

Lixo? OK, mostre-me um exemplo de NÃO é lixo. Além disso, só porque você não viu algo não significa que ele não exista.
 
Tapochun:
Lixo? Bem, me dê um exemplo de algo que NÃO é lixo. Além disso, só porque você não viu algo, não significa que não esteja lá.
A única coisa que eu vi que não é lixo está nos padrões dos castiçais.
 
Vitaly Muzichenko:
A única coisa que eu vi que não está drenando é nos padrões dos castiçais.
O meu também não está drenando, e essa é a sua palavra. e não há padrões lá.
 
Leanid Aladzyeu:
O meu também não é nivelado, e essas são suas palavras. e não há padrões.
No momento, não me referia à matemática. Eu escrevi sobre indicador puro. O seu é bom.
 

ajudar a consertar

A EA coloca 4 ordens pendentes

2 parada de compra e venda

2 limite de compra e venda

não sei como trocar pedidos pendentes, mas não sei a que distância um pedido deve ser feito

é a mesma coisa com posições de compra e parada

Depois que todos os pedidos forem feitos, um novo pedido deve ser feito antes que um novo pedido seja acionado.

eu tenho muitos lotes perdidos, mas eles seriam negativos se eu trocasse os pedidos


//| iiiiiiiiiiiiiiiiiiiiiiii_buy_sell.mq4 |

//| |

//| |

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

N = 100; // baías externas e vendas (contando separadamente) permitidas a ter cem peças cada


Lotes duplos externos = 0,01; // lote


PROF int externo = 100; // parada da rede de arrasto, começar com cem pips de lucro

TS externo int = 200; // puxá-lo em parada atrás do preço

externo int STEP = 200; // distância entre duas ordens de parada

externo int TP = 10000; //tomar ordem

externo int SL = 10000; // receber ordens

bool externo Comprar = falso; // comprar somente

venda externa Vender = verdadeiro; // vender apenas

duplo PROSADKA externo = 0,5; // quando a equidade é igual ou menor que esta fração de saldo

compra mágica int exterior = 777;

Magicsell int externo = 888;


int M;

compra_op duplo, selltop_OP;

duplo selllimit_OP, buylimit_OP;


int start()

{

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


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

// ver que ordens temos:

int compra = 0,vender = 0;

int buystop = 0,selltop = 0;

int selllimit = 0,buylimit = 0;

int compra = 0,vende = 0;

int Total = 0;

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

if(OrderType() == OP_BUYSTOP)

buyystop = OrderTicket();

if(OrderType() == OP_BUYLIMIT)

buylimit = OrderTicket();

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

compra ++;

if(OrderType() == OP_SELLSTOP)

selltop = OrderTicket();

if(OrderType() == OP_SELLLIMIT)

selllimit = OrderTicket();

if(OrderType() == OP_SELLSTOP || OrderType() == OP_SELLLLIMIT || OrderType() == OP_SELLL )

vende ++;

Total ++;

}

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

int LET = 0;

se (AccountEquity()/AccountBalance() < PROSADKA)

LET = 1; // se o drawdown for alto - proibição de colocar novas posições

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

// estabelecendo novos negócios :

if(LET == 0 && TimeCurrent() && M != iTime(Symbol(),1,0)) // uma vez por minuto

{

se ( compra > 1 && compra < N && compra == verdadeiro)

{

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

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

}

se ( buylimit < 1 && compra < N && compra == Verdadeiro)

{

buylimit_OP = NormalizeDouble(Ask-STEP*Point,Dígitos);

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

}

se ( selltop < 1 && vende < N && Sell == verdadeiro)

{

selltop_OP = NormalizeDouble(Bid-STEP*Point,Dígitos);

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

}

se ( selllimit < 1 && vende < N && Sell == Verdadeiro)

{

selllimit_OP = NormalizeDouble(Bid+STEP*Point,Dígitos);

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

}

M = iTime(Símbolo(),1,0);

}

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

// se o pedido estiver mais longe do que o TS do preço, arraste-o para mais perto :

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

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

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

OrderModify(selltop,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 o lucro do pedido for maior do que a parada PROF e estiver mais longe do que o TS do preço, arraste esta parada para trás do preço:

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

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

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

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

}

retorno(0);

}

 

O código deve ser formatado desta forma (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:

Para ganhar experiência nesta área, vou escrever 25 EAs gratuitamente para suas idéias e estratégias interessantes

Restam apenas 19 EAs

Boa tarde, escrevi aqui novamente em outro tópico.


Eu tenho uma estratégia para opções binárias. Em geral sua essência é a seguinte: usando umamédia móvel com um período de 20 eu identifico a tendência, usando ADX eu defino sua força (geralmente a um valor visual acima de 25 eu a defino como forte), usando análise gráfica eu defino pontos de entrada (geralmente de manhã, estrelas noturnas, martelos e "frutas penduradas", eu não considero doji com sombras simétricas porque eu acho que elas são contraditórias). Ao fechar uma vela com o modelo necessário eu entro às 5 horas (verifiquei as estatísticas manualmente em 6 meses em D1: na melhor das hipóteses um sinal durante 6 meses. H4 não é considerado devido ao diferente tempo de fechamento da geometria da vela em diferentes corretores).

Em geral sobre as estatísticas recebidas por mim na média de cada ferramenta 0,7-3% durante um mês (na transação sempre foi digitado 1% do depósito) eu digitalizei manualmente 5 ferramentas (e o corretor que eu uso nas opções tem 42 ferramentas, manualmente todas as estatísticas para trabalhar através de muito trabalho terá que fazer). Não levo em consideração a influência das notícias sobre os resultados. Mais tarde, posso postar arquivos do terminal com minhas marcas neles, onde entrei, em que momento do vencimento tive lucro e onde perdi etc. Meu corretor usa um terminal MT4. Talvez alguém tenha algumas sugestões de como melhorar esta estratégia?

Na descrição que descrevi a idéia geral, seria bom que o consultor especializado pudesse mudar automaticamente o valor da transação para cada período de tempo (por exemplo, uma vez por mês).

 
Adelaur:
Às vezes o cursor salta no campo de cotação ao responder e não sai dele. Como lidar com isso:Fórum: o cursor salta para a citação quando você responde