Ajuda na codificação - página 18

 

Obtenção de erros na ajuda da EA É necessário

Obtendo apenas 1 comércio

Preciso de todo o comércio que é gerado na RAZÃO Icustom

mas

fio externo Símbolo_1 = "EURUSD";

int magic=9503;

return(0);

int deinit()

{

retorno(0);

}

datatime newbar;

int start()

{

if(newbar==Time[0])return(0); //

ou então newbar=Time[0];

double ArrowUp = iCustom(NULL,0, "NBO-System_v1",2,1,10000,2,1);

double ArrowDown = iCustom(NULL,0, "NBO-System_v1",2,1,10000,3,1);//PERIOD_M5

if (ArrowDown >0 && ArrowDown!=2147483647 && OrderTotal()==0)//!= EMPTY_VALUE )

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

}

if (ArrowUp >0 && ArrowUp!=2147483647 && OrderTotal()==0)

{

OrderSend(Symbol_1,OP_SELL,0.1, MarketInfo(Symbol_1,MODE_BID), 2, NULL, NULL, "RapidFire", magic, NULL,LimeGreen );

}

retorno(0);

}

Arquivos anexados:
ea.png  22 kb
 
 
Em sua EA esta condição

OrdensTotal()==0

Se você quiser abrir mais de 1 ordem de cada vez, remova essa condição, mas você tem que adicionar código para evitar abrir várias ordens na mesma barra (caso contrário, você terminará com zilhões de ordens abertas). Você pode usar uma função que se pareceria com isto :

int countOpenedOnACurrentBar()

{

int openedAtBar = 0;

datetime startTime = Time[0];

datetime endTime = Time[0]+Period()*60;

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

{

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;

if(OrderMagicNumber() != MagicNumber) continue;

if(OrderSymbol() != Symbol()) continue;

if(OrderOpenTime()=endTime) continue;

openedAtBar++;

break;

}

return(openedAtBar);

}

[/PHP]

e então sua condição completa (para compra) seria assim :

[PHP]if (ArrowDown >0 && ArrowDown!=2147483647 && countOpenedOnACurrentBar()==0)

Isso evitaria a abertura de várias ordens em uma mesma barra (este código não verifica o tipo da ordem já aberta em uma barra atual, se você deseja verificar isso também, você tem que adicionar mais algumas condições

vegadigitalco:
Obtendo apenas 1 comércio

Preciso de todo o comércio que é gerado na RAZÃO Icustom

mas

fio externo Símbolo_1 = "EURUSD";

int magic=9503;

return(0);

int deinit()

{

retorno(0);

}

datatime newbar;

int start()

{

if(newbar==Time[0])return(0); //

ou então newbar=Time[0];

double ArrowUp = iCustom(NULL,0, "NBO-System_v1",2,1,10000,2,1);

double ArrowDown = iCustom(NULL,0, "NBO-System_v1",2,1,10000,3,1);//PERIOD_M5

if (ArrowDown >0 && ArrowDown!=2147483647 && OrderTotal()==0)//!= EMPTY_VALUE )

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

}

if (ArrowUp >0 && ArrowUp!=2147483647 && OrderTotal()==0)

{

OrderSend(Symbol_1,OP_SELL,0.1, MarketInfo(Symbol_1,MODE_BID), 2, NULL, NULL, "RapidFire", magic, NULL,LimeGreen );

}

retorno(0);

}
 

Muito mais do que o X para HELPPPPPPPPPPPPPP

Muito mais do que o X para HELPPPPPPPPPPPPPP

Muito mais do que o X para HELPPPPPPPPPPPPPPP

Muito mais do que o X para HELPPPPPPPPPPPPPP

Muito mais do que o X para HELPPPPPPPPPPPPPPP

mladen:
Em sua EA, esta condição

OrdensTotal()==0

Se você quiser abrir mais de 1 ordem de cada vez, remova essa condição, mas você tem que adicionar código para evitar abrir várias ordens na mesma barra (caso contrário, você terminará com zilhões de ordens abertas). Você pode usar uma função que se pareceria com isto :
int countOpenedOnACurrentBar()

{

int openedAtBar = 0;

datetime startTime = Time[0];

datetime endTime = Time[0]+Period()*60;

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

{

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;

if(OrderMagicNumber() != MagicNumber) continue;

if(OrderSymbol() != Symbol()) continue;

if(OrderOpenTime()=endTime) continue;

openedAtBar++;

break;

}

return(openedAtBar);

}

[/PHP]

e então sua condição completa (para compra) seria assim :

[PHP]if (ArrowDown >0 && ArrowDown!=2147483647 && countOpenedOnACurrentBar()==0)
Isso impediria a abertura de vários pedidos em uma mesma barra (este código não verifica o tipo do pedido já aberto em uma barra atual, se você deseja verificar isso também, você tem que adicionar mais algumas condições
Arquivos anexados:
 

o saldo é o back-test, live-demo-testing ou real-money-trading-balance

A EA nunca me passa pela cabeça como as entradas semi-automáticas são boas e frias o suficiente (semi significa obstáculo extra quando você faz um pedido, como fly-by-wire, o computador pode mandar invalidar suas entradas)

mas o ticks-ease é como um anel de fogo em videogame, há apenas alguns pontos no ringue de uma vez, em que você pode se colocar, outros o queimarão muito facilmente --- esta não é a condição do mercado durante os últimos 5 a 10 meses, mas as coisas estão ficando mais fáceis

quero ler esses códigos na EA acima - mas esses códigos estão além do meu limite de compreensão

 

precisam de alerta no comércio codificado acima

Hello mladen,

obrigado por seu apoio único para mim

1 mais uma coisa, como posso adicionar o código de alerta na compra ou venda gerado no código acima sugerido por você.

no mercado ao vivo ele não fecha a compra ou venda, é apenas criar um novo comércio.

Do queX em avanço

 

...

Experimente algo assim (este é um exemplo apenas para comprar)
if (ArrowDown >0 && ArrowDown!=2147483647 &&countOpenedOnACurrentBar()==0)

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

if (!IsTesting()) Alert(Symbol_1+" BUY ordere opened at "+TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS));

}

vegadigitalco:
Olá mladen,

obrigado por seu apoio único para mim1 mais uma

coisa, como posso adicionar código de alerta na compra ou venda gerado em código acima sugerido.

no mercado ao vivo ele não fechou compra ou venda, é apenas criar um novo comércio.

do queX em Advance
 

Importam-se de compartilhá-lo aqui? eu realmente gosto de como a ea leva o ofício.

 

Olá, mLaden,

Que X novamente por nossa grande ajuda:)

apenas 1 problema permanece

no mercado ao vivo não fechou a posição de compra ou venda anterior, apenas criando um novo comércio. ???

do que em ADV

mladen:
Experimente algo assim (este é um exemplo apenas para comprar)
if (ArrowDown >0 && ArrowDown!=2147483647 &&countOpenedOnACurrentBar()==0)

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

if (!IsTesting()) Alert(Symbol_1+" BUY ordere opened at "+TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS));

}

 

...

vegadigitalco

Para isso, é preciso acrescentar lógica de fechamento em sua EA. Ou use Take Profit e Stop Loss, ou use OrderClose() explícito com base em algumas regras de saída para isso.

vegadigitalco:
Olá, mLaden,

Que X novamente para nossa grande ajuda:)

resta apenas 1 problema

no mercado ao vivo não fechou a posição de compra ou venda anterior, apenas criando um novo comércio. ???

do que no ADV