Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1094

 
alvlaf:

Você coloca manualmente a EA nos gráficos e quer que ela abra os pedidos MaxOpenOrders ou TOTAL dos pedidos MaxOpenOrders em TODOS os gráficos? E que ordens: apenas as do mercado ou todas elas, incluindo limite e parada?

 
A13ksandr:

Você coloca manualmente a EA nos gráficos e quer que ela abra os pedidos MaxOpenOrders ou TOTAL dos pedidos MaxOpenOrders em TODOS os gráficos? E que ordens: apenas as do mercado ou todas elas, incluindo limite e parada?

Precisamos dele para abrir pedidos para todos os instrumentos. Suponha que o MaxOpenOrders seja 1, ele deve abrir apenas uma ordem de mercado. Este é um bot para opções binárias, não há ordens pendentes. Entretanto, funciona em série, se a posição for fechada com prejuízo, então a mesma posição é aberta, apenas com um lote maior, e até que a série termine com um comércio lucrativo, nenhum comércio deve ser aberto para outros instrumentos.
 
A13ksandr:
Qual é a finalidade das palavras "nesta estratégia"? A magia é necessária se houver negociações manuais na conta, ou se outra EA estiver em execução, para que estas ordens não sejam tocadas. Eu acho que sim.
Sim, obrigado,A13ksandr .Eu também mudo a magia ao depurar para não esperar pelo fim de uma série perdida. Além disso, a simples remoção da magia não muda o algoritmo de operação do bot. Eu não planejo abrir pedidos lá manualmente.
 
alvlaf:
Ela precisa abrir para todos os símbolos. Suponha que a MaxOpenOrders seja 1, ela deve abrir apenas uma ordem de mercado. Este é um bot para opções binárias, não há ordens pendentes. Entretanto, funciona em série, se a posição for fechada com prejuízo, então a mesma posição é aberta, apenas com um lote maior, e até que a série termine com um comércio lucrativo, nenhum comércio deve ser aberto para outros instrumentos.

OK, eu perdi a parte das opções binárias. Por alguma razão, parece-me que se eu fixar manualmente o mesmo EA em gráficos diferentes, ele ainda contará como executando EAs diferentes. E para TODAS as opções do gráfico 1 serão executadas (bem, quando funcionar corretamente). Eu mesmo poderia estar errado por ser um principiante. Considerei desta forma a moeda múltipla em minha EA:

cadeia de entrada TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD"; // símbolos para negociação

Símbolos de corda[50]; // 50 é o número máximo de símbolos

int SymbolCount;

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

int OnInit()

{

se (IsTesting() || !ExtractSymbols())

{

SymbolCount = 1;

Símbolos[0] = Símbolo();

}

return(INIT_SUCCEED);

}

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

Extrato de BoolSymbols()

{

ushort Comma = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, Comma, Symbols);

para (int i = 0; i < SymbolCount; i++)

{

StringToUpper(Símbolos[i]);

Symbols[i] = StringTrimRight(Símbolos[i]); // proteção contra espaços acidentais

Symbols[i] = StringTrimLeft(Símbolos[i]);

}

se (SymbolCount > 0) retornar(true);

retorno(falso);

}

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

nulo OnTick()

{

para (int i = 0; i < SymbolCount; i++)

{

duplo LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK);

double LastBid = SymbolInfoDouble(Symbols[i], SYMBOL_BID);

// e assim por diante...

}

}

Para aplicar a EA a qualquer tabela. Desta forma, o MaxOpenOrders será exatamente para todos os gráficos.

 
// e assim por diante... - Isto é, ele passa para o antigo código da própria EA?
 
A13ksandr:

OK, eu perdi a parte das opções binárias. Por alguma razão, parece-me que se eu fixar manualmente o mesmo EA em gráficos diferentes, ele ainda contará como executando EAs diferentes. E para TODAS as opções do gráfico 1 serão executadas (bem, quando funcionar corretamente). Eu mesmo poderia estar errado por ser um principiante. Considerei desta forma a moeda múltipla em minha EA:

cadeia de entrada TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD"; // símbolos para negociação

Símbolos de corda[50]; // 50 é o número máximo de símbolos

int SymbolCount;

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

int OnInit()

{

se (IsTesting() || !ExtractSymbols())

{

SymbolCount = 1;

Símbolos[0] = Símbolo();

}

return(INIT_SUCCEED);

}

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

Extrato de BoolSymbols()

{

ushort Comma = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, Comma, Symbols);

para (int i = 0; i < SymbolCount; i++)

{

StringToUpper(Símbolos[i]);

Symbols[i] = StringTrimRight(Símbolos[i]); // proteção contra espaços acidentais

Symbols[i] = StringTrimLeft(Símbolos[i]);

}

se (SymbolCount > 0) retornar(true);

retorno(falso);

}

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

nulo OnTick()

{

para (int i = 0; i < SymbolCount; i++)

{

duplo LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK);

double LastBid = SymbolInfoDouble(Symbols[i], SYMBOL_BID);

// e assim por diante...

}

}

Para aplicar a EA a qualquer tabela. Desta forma, os MaxOpenOrders serão precisos para todos os gráficos.

Este código está escrito em MQL5?
 
A13ksandr:
if (DayOfWeek() == 1) Preço = iOpen(Symbol(), PERIOD_D1, 4);
if (DayOfWeek() >= 2) Preço = iOpen(Symbol(), PERIOD_D1, DayOfWeek() - 2);

E se a semana seguinte se foi, e eu ainda preciso manter um relatório do preço de abertura do bar da terça-feira da semana passada... Eu preciso de um EA para determinar o preço de abertura do bar na terça-feira e partir dele o tempo necessário, por exemplo - uma semana, duas, um mês, etc.

Obrigado.

 
yaaarik777:

E se a próxima semana tiver começado e eu ainda precisar informar o preço do bar aberto de terça-feira da semana passada? ou seja, preciso que o consultor especializado determine o preço do bar aberto na terça-feira e o utilize pelo tempo necessário, por exemplo, uma semana, duas semanas, um mês, etc.

Obrigado.

Então você estabelece uma data específica e o programa leva o preço de abertura do dia para essa data, é ainda mais fácil.

 
evillive:

Então você fixa uma data específica e o software leva o preço de abertura do dia para essa data, é ainda mais fácil.

Você pode me ajudar com o código, eu não o entendo.

Você acha que o cálculo do preço de abertura do primeiro bar na terça-feira pode ser implementado no OnInit() e ele calculará o preço na inicialização e o lembrará até que a EA seja reiniciada?

sinto muito se estou escrevendo bobagens, estou apenas aprendendo)

 
yaaarik777:

Você pode ajudar com o código, eu não o entendo.

Você acha que o preço da primeira barra na terça-feira deve ser calculado no OnInit() e ele calculará o preço na inicialização e o lembrará até que a EA seja reiniciada?

Sinto muito se estou escrevendo bobagens, estou apenas aprendendo)

O preço de abertura da primeira barra do dia = o preço de abertura da barra diária. Você pode fazer isso em Inite, se não precisar recalcular o valor mais tarde.

O código é aproximadamente o seguinte:

input datetime dayz=D'2016.09.06 00:00'; //зададим прошлый вторник, начало суток

int bar_dayz=0;
double price_dayz=0;

int OnInit()
{
////...
bar_dayz=iBarshift(_Symbol,PERIOD_D1,dayz); 
price_dayz=iOpen(_Symbol,PERIOD_D1,bar_dayz);
///...
}