//+-------------------------------------------------------------------------------------+//| Открытие позиций |//+-------------------------------------------------------------------------------------+bool Trade (int signal)
{
double sl = 0, tp = 0;
if(signal == SIGNAL_BUY && FindOrders() == 0) // Если сигнал на покупку и открытых ордеров нет...
{
g_ticket = OpenBuy(); // открываем лимитный ордер на покупкуif(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true) // Если ордер есть и он выбран..
{
if(i_sl != 0) // Если входной параметр стоп-лосса не равен 0, то..
sl = NormalizeDouble(OrderOpenPrice() - i_sl*Point,Digits); // Получаем значение стоп-лосса для выбранного ордераif(i_tp != 0) // Если входной параметр тейкпрофита не равен 0, то..
tp = NormalizeDouble(OrderOpenPrice() + i_tp*Point,Digits); // Получаем значение тейкпрофита для выбранного ордера
}
}
elseif(signal == SIGNAL_SELL && FindOrders() == 0) // Если сигнал на продажу и открытых ордеров нет..
{
g_ticket = OpenSell(); // Открываем лимитный ордер на продажуif(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true) // Если ордер есть и он выбран..
{
if(i_sl != 0) // Если входной параметр стоп-лосса не равен 0, то..
sl = NormalizeDouble(OrderOpenPrice() + i_sl*Point,Digits); // Получаем значение стоп-лосса для выбранного ордераif(i_tp != 0) // Если входной параметр тейкпрофита не равен 0, то..
tp = NormalizeDouble(OrderOpenPrice() - i_tp*Point,Digits); // Получаем значение тейкпрофита для выбранного ордера
}
}
if(sl != 0 || tp != 0) // Если полученные значения sl и tp не равныы 0, то..
{
OrderModify(g_ticket,OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime); // Модифицируем ордерreturn(true);
}
return(true);
}
Tudo claro e conciso. O erro 130 continua aparecendo no testador, embora o Expert Advisor funcione, mas o erro 130 continua aparecendo. Qual é a razão disso?
Pensei que tinha algo a ver com o nível de parada, acrescentei verificação, mas não é a mesma coisa. Eu o removi por enquanto, pois na Alpari este nível é 0. Por favor, dê uma dica do que precisa ser corrigido para evitar este erro.
Declarar uma variável do tipo data/hora e atribuir-lhe o valorTempo[0]. Após a abertura do pedido, se não for igual aTempo[0], você pode abrir o próximo pedido e se for igual a Sair. Quanto ao critério, eu não olhei para o código, mas parece que se for estocástico, ele deve ser acionado no cruzamento em níveis sobre-comprados/sobre-vendidos (geralmente >80 e <20%). Para maior clareza, fixe os níveis em 20 e 80 % nos ambientes estocásticos
Rigonich:
Declarar uma variável do tipo data/hora, atribuir-lhe o valorTempo[0], após abrir uma ordem, então se não for igual aTempo[0], você pode abrir a próxima ordem, se for igual a --sair do início. Quanto ao critério, eu não olhei para o código, mas parece que se for estocástico, ele deve ser acionado no cruzamento em níveis sobre-comprados/sobre-vendidos (geralmente >80 e <20%). Para maior clareza, estabeleça os níveis de 20 e 80 % nos ambientes estocásticos.
Boa tarde, por favor, ajude-me, não consigo entender porque ordens desnecessárias estão abrindo ((, circulado em vermelho na captura de tela, aqui estão os critérios
// Торговые критерии
M_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN, 0);
M_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN, 1);
S_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,0);
S_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,1);
if (M_2 < S_2 && M_1>=S_1 )
{
if (Total==1)
{
if (Vremya== Time [0])
return;
T=Close_Order (Lts,Tip);
Vremya= Time [0];
if (T==true)
{
Total=0;
}
}
if (Total==0)
{
if (Vremya== Time [0])
return;
Open_Order_B (Lts);
Vremya= Time [0];
}
}
if (M_2 > S_2 && M_1<=S_1 )
{
if (Total==1)
{
if (Vremya== Time [0])
return;
T=Close_Order (Lts,Tip);
Vremya= Time [0];
if (T==true)
{
Total=0;
}
}
if (Total==0)
{
if (Vremya== Time [0])
return;
Open_Order_S (Lts);
Vremya= Time [0];
}
}
Equilibrium: Boa tarde, por favor, ajude-me, não consigo entender por que os pedidos indesejados abrem ((, na imagem da tela eles estão circulados em vermelho, aqui estão os critérios
Tente tomar valores indicadores de 1 e 2 barras. Algo parecido com isto.
Tudo claro e conciso. O erro 130 continua aparecendo no testador, embora o Expert Advisor funcione, mas o erro 130 continua aparecendo. Qual é a razão disso?
Esta função utiliza funções de abertura de posição, aqui estão elas:
Pensei que tinha algo a ver com o nível de parada, acrescentei verificação, mas não é a mesma coisa. Eu o removi por enquanto, pois na Alpari este nível é 0. Por favor, dê uma dica do que precisa ser corrigido para evitar este erro.
Olá a todos,
por favor, informe como descobrir o preço máximo que foi após a formação de um fractal
Aqui está a função comercial que abre posições:
Tudo claro e conciso. O erro 130 continua aparecendo no testador, embora o Expert Advisor funcione, mas o erro 130 continua aparecendo. Qual é a razão disso?
Esta função utiliza funções de abertura de posição, aqui estão elas:
Pensei que tinha algo a ver com o nível de parada, acrescentei verificação, mas não é a mesma coisa. Eu o removi por enquanto, pois na Alpari este nível é 0. Por favor, dê uma dica do que precisa ser corrigido para evitar este erro.
double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)];
Declarar uma variável do tipo data/hora e atribuir-lhe o valorTempo[0]. Após a abertura do pedido, se não for igual aTempo[0], você pode abrir o próximo pedido e se for igual a Sair. Quanto ao critério, eu não olhei para o código, mas parece que se for estocástico, ele deve ser acionado no cruzamento em níveis sobre-comprados/sobre-vendidos (geralmente >80 e <20%). Para maior clareza, fixe os níveis em 20 e 80 % nos ambientes estocásticos
Declarar uma variável do tipo data/hora, atribuir-lhe o valorTempo[0], após abrir uma ordem, então se não for igual aTempo[0], você pode abrir a próxima ordem, se for igual a --sair do início. Quanto ao critério, eu não olhei para o código, mas parece que se for estocástico, ele deve ser acionado no cruzamento em níveis sobre-comprados/sobre-vendidos (geralmente >80 e <20%). Para maior clareza, estabeleça os níveis de 20 e 80 % nos ambientes estocásticos.
Boa tarde, por favor, ajude-me, não consigo entender por que os pedidos indesejados abrem ((, na imagem da tela eles estão circulados em vermelho, aqui estão os critérios
Tente tomar valores indicadores de 1 e 2 barras. Algo parecido com isto.
Olá a todos,
por favor, informe como descobrir o preço máximo que foi após a formação de um fractal
Próximo fractal superior.
double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)];
Boa tarde, favor aconselhar
Como registrar 1,30320 para EURUSD, por exemplo?Aqui está a função comercial que abre posições:
Tudo claro e conciso. O erro 130 continua aparecendo no testador, embora o Expert Advisor funcione, mas o erro 130 continua aparecendo. Qual é a razão disso?
Esta função utiliza funções de abertura de posição, aqui estão elas:
Pensei que tinha algo a ver com o nível de parada, acrescentei verificação, mas não é a mesma coisa. Eu o removi por enquanto, pois na Alpari este nível é 0. Por favor, dê uma dica do que precisa ser corrigido para evitar este erro.
Acho que é tudo sobre a função GetPriceToInput().