Como codificar? - página 278

 

Eu o testei por 20 dias e parece que eu perderia dinheiro

Vou voltar por um ano, vamos ver

mas antes de tudo eu preciso se eu puder modificar os tempos mudando apenas o valor da corda externa inicial e final da corda externa?

 

Também notei que a EA faz negócios várias vezes ao dia. Portanto, devemos dizer à EA para fazer apenas uma troca para a primeira saída desta faixa Min-Max -/+ 5 pips. Também devemos incorporar o trailing stop ao invés de apenas parar a perda.

Também questionar sobre números. Não é 300 igual a 300 pips? precisamos parar para ser 30 pips e tirar lucro de 50 pips. O que significa também magis = 123?

mesma pergunta para isto se(Bid<=(low-0.005)) 0,005 aqui não é 50 pips?

não é dupla stopLoss externa = 300,0;

double takeProfit externo = 500,0;

string extern Begin="02:00";

cordão externo Fim="10:00";

distância dupla externa = 80;

bool isECN = verdadeiro;

bool cond = falso;

bool cond2 = falso;

duplo baixo;

duplo alto;

lotes duplos externos = 0,1;

int magic = 123;

int slippage = 1;

comentário de cordel = "";

int ticket;

 
Avasys:
Também notei que a EA faz negócios várias vezes ao dia. Portanto, devemos dizer à EA para fazer apenas uma troca para a primeira saída desta faixa Min-Max -/+ 5 pips. Também devemos incorporar o trailing stop ao invés de apenas parar a perda.

Também perguntas sobre números. Não é 300 igual a 300 pips? precisamos parar para ser 30 pips e tirar lucro de 50 pips. O que significa também magis = 123?

mesma pergunta para isto se(Bid<=(low-0.005)) 0,005 aqui não é 50 pips?

não é dupla stopLoss externa = 300,0;

double takeProfit externo = 500,0;

string extern Begin="02:00";

cordão externo Fim="10:00";

distância dupla externa = 80;

bool isECN = verdadeiro;

bool cond = falso;

bool cond2 = falso;

duplo baixo;

duplo alto;

lotes duplos externos = 0,1;

int magic = 123;

int slippage = 1;

comentário de cordel = "";

int ticket;

[lang=pl]Você está certo, deve haver 0,0005 ao invés de 0,005. 300 e 500 é porque eu uso um corretor de cinco dígitos, é um valor médio de 300 poços, portanto 30 pips.

Por favor, me diga que você precisa de uma espécie de parada de rastreamento ? sobre o número mágico. Como você pode ver, eu mudo seu número mágico se você não quiser 123 [/lang]

Arquivos anexados:
simple_ea.mq4  4 kb
 
g.pociejewski:
[lang=pl]Você está certo, deveria haver 0,0005 ao invés de 0,005. 300 e 500 é porque eu uso um corretor de cinco dígitos, são 300 poços médios, portanto 30 pips. Por favor, me diga que você precisa de uma espécie de parada de rastreamento ? sobre o número mágico. Como você pode ver, eu mudo seu número mágico se você não quiser 123 [/lang]

Obrigado

Assim, esta EA agora faz negócios apenas uma vez por dia, portanto, a quebra dos níveis pode ocorrer poucas vezes ao longo do dia, mas só pode negociar uma vez.

Também em relação ao EURJPY por ser uma moeda de alto valor, eu ainda uso a mesma numeração ou movo 00?

e também posso mudar ou modificar números, parar de perder, ter lucro, vezes

em relação à parada de trilha. Eu gostaria que quando o lucro subir, 35 pips de trailing stop devem seguir para bloquear o lucro.

Então, e se eu mudar aqui?

stopLoss externo duplo = 300,0; (uso corretor de 4 dígitos então, devo modificar isto?)

takeProfit duplo externo = 500,0;

fio externo Begin="0:00"; (afiação acontece se eu quiser fazer o intervalo de tempo 22:00 do dia anterior e 06:00 do dia atual?)

fio externo Fim="08:15";

distância externa dupla = 60;

bool isECN = verdadeiro;

bool cond = falso;

bool cond2 = falso;

duplo baixo;

duplo alto;

lotes duplos externos = 0,1;

int magic = 123;

int slippage = 1;

comentário de cordel = "";

int ticket;

também e se eu mudar isto

if(Bid<==(low-0.005))

Pode não afetar a funcionalidade do código, certo?

O único problema que tem quando tento fazer um backtest é que, como se a EA executasse poucas operações em um dia, você pode conseguir em código executar apenas uma operação por um par por dia

 

Olá novamente

OK, descobri que a distância não deve ser 80 para os pares como GBPUSD, que tem valor inferior aos pares JPY, portanto, no caso de pares JPY, a distância deve ser 10X maior do que para os pares de baixo valor.

e novamente, não consegui entender uma coisa quando eu a retrocedi no resultado, ele diz como se a EA tivesse negociado várias vezes em um dia no mesmo par.

Então é possível que, se a EA entrou em posição, esta posição deva ser apenas uma naquele dia?

obrigado

Também o que significa o seguinte:

int slippage= 1;

string comment = "";

int ticket;

e também poderia eu adicionar script no EA e quando o comércio executado é sms-ed ou enviado por e-mail para mim?

obrigado

 

StopTrading para hoje, se uma ordem está na história

Hi,

talvez alguém possa me orientar a fazer:

- A ordem é executada, fechada em lucro ou prejuízo e listada na história

- agora quero desativar a negociação/parar de abrir novas ordens neste par (símbolo) para o dia inteiro

- no dia seguinte, um novo pedido pode ser executado

é como uma função"Max Trades Per Bar", mas baseada na história.

os diferentes trechos de código testados no servidor falham, porque me faltam habilidades de codificação estendida

exemplo:

12008.01.07 02:36sell10.101.47300.00000.00000.00000.0010000.00

22008.01.07 03:14close10.101.47140.00000.000016.0010016.00

32008.01.07 03:14sell20.101.47120.00000.00000.0010016.00

42008.01.07 07 07:54close20.101.46720.00000.000040.0010056.00

52008.01.07 07:54sell30.101.46710.00000.00000.00000.0010056.00

62008.01.09 15:56close30.101.46630.00000.00007.0410063.04

72008.01.10 14:24buy40.101.47080.00000.00000.0010063.04

82008.01.10 14:47close40.101.47480.00000.000040.501010103.54

qualquer ajuda é muito apreciada

cumprimentos

Michael

 
ixbone:
Hi,

talvez alguém possa me orientar a fazer:

- A ordem é executada, fechada em lucro ou prejuízo e listada na história

- agora quero desativar a negociação/parar de abrir novas ordens neste par (símbolo) para o dia inteiro

- no dia seguinte, um novo pedido pode ser executado

é como uma função "Max Trades Per Bar", mas baseada na história.

os diferentes trechos de código testados no servidor falham, porque me faltam habilidades de codificação estendida

exemplo:

12008.01.07 02:36sell10.101.47300.00000.00000.00000.0010000.00

22008.01.07 03:14close10.101.47140.00000.000016.0010016.00

32008.01.07 03:14sell20.101.47120.00000.00000.0010016.00

42008.01.07 07 07:54close20.101.46720.00000.000040.0010056.00

52008.01.07 07:54sell30.101.46710.00000.00000.00000.0010056.00

62008.01.09 15:56close30.101.46630.00000.00007.0410063.04

72008.01.10 14:24buy40.101.47080.00000.00000.0010063.04

82008.01.10 14:47close40.101.47480.00000.000040.501010103.54

qualquer ajuda é muito apreciada

cumprimentos

Michael

[lang=pl]Oi Michael,

Uma pergunta: você precisa parar de abrir novas posições se alguma posição no dia atual estiver fechada, ou você não permite, por exemplo, abrir posições curtas, se alguma posição curta

é fechado no stop ? Há qualquer exemplo de como fazê-lo no caso de OP_BUY(para outros é semelhante)

tempo int;

bool cond = verdadeiro;

stopLoss duplo = 50;

double takeProfit = 70;

lotes duplos = 0,1;

ordens int = 0;

int magic = 123;

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

//| função de iniciação de especialista |

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

int init()

{

//----

//----

retorno(0);

}

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

//| função de desinicialização especializada |

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

int deinit()

{

//----

//----

retorno(0);

}

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

//| função de início especializado |

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

int start()

{

Print(countOrders(magia, OP_BUY));

if(orders !=countOrders(magic,OP_BUY)) cond = false;

if(time != DayOfWeek()) cond = verdadeiro;

if(cond) {

OrderSend(Symbol(),OP_BUY,lots,Ask, 1,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point,takeProfit)",",magic);

}

encomendas = countOrders(magia,OP_BUY);

hora = DayOfWeek();

//----

retorno(0);

}

int countOrders(int oMagic,int oType) {

int contagem=0;

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

if(OrderSelect(i,SELECT_BY_POS)) {

if(OrderMagicNumber()==oMagic) {

if(OrderSymbol()==Symbol()) {

if(OrderType()==oType || oType<0) {

contar++;

}

}

}

}

}

devolução(contagem);

}

duplo sltpValue(duplo w1, int w2){

if(w2 == 0)

retorno (0);

retorno (NormalizeDuplo(w1, Dígitos));

}

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

Espero que seja claro. Em caso de dúvidas, entre em contato comigo, por favor.

Abraço,

Grzesiek[/lang]

 

Olá Grzesiek,

sim apenas pare de abrir novas posições no dia atual, não importa se compra, vende, espera ou cancela:

- se uma ordem é fechada em lucro, prejuízo, cancelada ou pendente apagada e anotada no histórico - nenhuma nova negociação de qualquer tipo é permitida para este símbolo() no dia atual

- se tivermos um novo dia, todo tipo de novas ordens podem ser executadas.

o que eu fiz, não está funcionando:

somente1Ordem por dia=verdadeiro;

if(Only1OrderPerDay==verdadeiro){

CondeHistoryOrders();

}

EncomendasContaHistória nula(){

for(int d=0;d<OrdersHistoryTotal();d++){

OrderSelect(d,SELECT_BY_POS,MODE_HISTORY);{

if(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || Magic==0))d+++;

Print("HistoryOrders "+DoubleToStr(d,0));

{

if(d>0 ....time?...){

retornar;

}}}}}

obrigado pela ajuda

Michael

g.pociejewski:
[lang=pl]Oi Michael,

Uma pergunta: você precisa parar de abrir novas posições se alguma posição no dia atual estiver fechada, ou você não permite, por exemplo, abrir posições curtas, se alguma posição curta

é fechado no stop ? Há qualquer exemplo de como fazê-lo no caso de OP_BUY(para outros é semelhante)

tempo int;

bool cond = verdadeiro;

stopLoss duplo = 50;

double takeProfit = 70;

lotes duplos = 0,1;

ordens int = 0;

int magic = 123;

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

//| função de iniciação de especialista |

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

int init()

{

//----

//----

retorno(0);

}

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

//| função de desinicialização especializada |

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

int deinit()

{

//----

//----

retorno(0);

}

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

//| função de início especializado |

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

int start()

{

Print(countOrders(magia, OP_BUY));

if(orders !=countOrders(magic,OP_BUY)) cond = false;

if(time != DayOfWeek()) cond = verdadeiro;

if(cond) {

OrderSend(Symbol(),OP_BUY,lots,Ask, 1,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point,takeProfit)",",magic);

}

encomendas = countOrders(magia,OP_BUY);

hora = DayOfWeek();

//----

retorno(0);

}

int countOrders(int oMagic,int oType) {

int contagem=0;

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

if(OrderSelect(i,SELECT_BY_POS)) {

if(OrderMagicNumber()==oMagic) {

if(OrderSymbol()==Symbol()) {

if(OrderType()==oType || oType<0) {

contar++;

}

}

}

}

}

devolução(contagem);

}

duplo sltpValue(duplo w1, int w2){

if(w2 == 0)

retorno (0);

retorno (NormalizeDuplo(w1, Dígitos));

}

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

Espero que seja claro. Em caso de dúvidas, entre em contato comigo, por favor.

Abraço,

Grzesiek[/lang]
 

Parada de Perda por Arrastar e Soltar

Olá

Tenho o roteiro de Drag and Drop Stop Loss, e um amor por usá-lo. Mas com minha dose de corretor não funciona para 2 pedidos em um mesmo scart, apenas estabeleço 1 pedido. Quero definir Stop Loss para 2 ordens no mesmo lugar.

Qual é o problema? É um bom trabalho para outro corretor.

Por favor, ajude-me

int start()

{

//----

int dígitos = MarketInfo(Symbol(),MODE_DIGITS);

valor duplo = NormalizeDuplo(WindowPriceOnDropped(),digitos);

for(int i=OrdensTotal()-1;i>=0;i--)

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

continuar;

if(OrderSymbol()!=Symbol())

continuar;

RefreshRates();

if(OrderType()==OP_BUY)

if(valor<Bid)

OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(),White);

if(OrderType()==OP_SELLL)

if(valor>Ask)

OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(),White);

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

if(valor<OrderOpenPrice())

OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(),White);

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

if(valor>OrderOpenPrice())

OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(),White);

}

retorno(0);

}

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

 

Como posso encontrar a posição co ordenada X Y de dois indicadores diferentes em uma EA para comprar e vender onde a cruz

digamos um Macd e outro indicador na mesma subjanela?

Razão: