OrderTotal() dá o número de posições já abertas, ou seja, você pode usá-lo para verificar se já existe ou não uma posição aberta.
Eu uso a função Terminal() do tutorial ao fechar posições, desde que Mas_Ord_New[0][0]!=0. Mas temos outra tarefa aqui: devemos criar uma bandeira proibindo o comércio pelo sinal atual, se uma ordem já foi aberta por ela. Estou tentando usar bandeiras, mas cometi um erro de alguma forma.
staticbool buy_1=true;
if(Stoch_Sig==4 && buy_l==true)
{
sl=Ask-Stop_Loss*Point;
Ans=OrderSend(Symb,OP_BUY,Lots,Ask,40,sl,0,"LSMA+Stoch",Magic);
if(Ans==false)
Alert("Неудачная попытка открыть ордер BUY. Ошибка: ", GetLastError());
if(Ans==true)
buy_l=false; // снимем флаг, запрещаем торговать по данному сигналу
}
if(Stoch_Sig!=4 && buy_l==false) // поднимем флаг, сигнал сменился - торговать по нему можно опять
buy_l=true;
Olá. Tenho uma pergunta sobre indicadores personalizados. A descrição do iCustom diz:
duplo iCustom(
símbolo de corda, int timeframe, nome da corda, ..., modo int, int shift)
Cálculo do indicador personalizado especificado. O indicador personalizado deve ser compilado (arquivo com extensão EX4) e colocado nosindicadores do terminal_diretório de especialistas.
símbolo
-
Nome do símbolo, em cujos dados o indicador será calculado. NULL significa símbolo atual.
cronograma
-
Período. Pode ser um dos períodos do gráfico. 0 significa o período do gráfico atual.
nome
-
Nome do indicador personalizado.
...
-
Lista de parâmetros (se necessário). Os parâmetros transmitidos devem corresponder à ordem de declaração e ao tipo de variáveis externas (externas) do indicador personalizado.
modo
-
Índice da linha indicadora. Pode ser de 0 a 7 e deve corresponder ao índice, usado por uma das funções do SetIndexBuffer.
turno
-
Índice do valor obtido do buffer de indicadores (deslocamento relativo à barra atual pelo número especificado de períodos de retorno).
Pergunta: como obter o valor de "turno" (ao chamar o indicador com um turno, ele usa os valores como sem ele, ou sejaiCustom(NULL, 0, "nome",pam1,0,1)= iCustom(NULL, 0, "nome",pam1,0,100), mas se eu chamar o indicador 100 barras atrás, ele terá um valor diferente do iCustom(NULL, 0, "nome",pam1,0,100). O indicador é simples, utiliza 5 valores fechados anteriores, toma sua média.
paladin80: Você definiu o desvio da linha principal para 0 (zero). Deve ser mais do que zero.
Reshetov: Você definiria o desvio também como negativo?
Obrigado, camaradas! Exatamente! Eu estava muito ocupado trabalhando e não fazia a menor idéia. Gostaria de ter clicado no botão de agradecimento, para não me multiplicar. )
A propósito, seria útil recomendar aos novatos a passagem de parâmetros para indicadores através de variáveis com nomes eloqüentes. Até agora eu fiz isso, desta vez eu perdi algo.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 13.06.2007 |//| Описание : Удаление ордеров. Версия функции для тестов на истории. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL - текущий символ) |//| op - операция ( -1 - любой ордер) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+void DeleteOrders(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), ot;
if (sy=="" || sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
if (OrderSymbol()==sy && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
OrderDelete(OrderTicket(), clDelete);
}
}
}
}
}
}
Eu recebo erros--->
Todas as variáveis da função são definidas dentro dela...o que está errado?
copiou-o, colou-o. --->
if((High[2]==High[1])||(Close[2]==High[1])||(High[2]==Open[1]))
{
DeleteOrders()
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 13.06.2007 |//| Описание : Удаление ордеров. Версия функции для тестов на истории. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL - текущий символ) |//| op - операция ( -1 - любой ордер) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+void DeleteOrders(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), ot;
if (sy=="" || sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
if (OrderSymbol()==sy && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
OrderDelete(OrderTicket(), clDelete);
}
}
}
}
}
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 13.06.2007 |//| Описание : Удаление ордеров. Версия функции для тестов на истории. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL - текущий символ) |//| op - операция ( -1 - любой ордер) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+void DeleteOrders(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), ot;
if (sy=="" || sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
if (OrderSymbol()==sy && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
OrderDelete(OrderTicket(), CLR_NONE);
}
}
}
}
}
}
Mas, você só precisa especificar uma cor, por exemplo -CLR_NONE.
Na verdade, tal condição (Alta[2]==Alta[1]) ou tal(Fechar[2]==Alta[1 ]) ou tal(Alta[2]==Aberta[1 ]) é rara. Olhe para o gráfico, quantas dessas coincidências você encontrará?
Em termos da lógica de remoção da ordem, ... - também sofre, em resumo.
quero construir uma EA com base nesta estratégia, só preciso fechar negócios com a condição _2 :), não consigo entender, tenho até uma função próxima e recebo erros o tempo todo.....
OrderTotal() dá o número de posições já abertas, ou seja, você pode usá-lo para verificar se já existe ou não uma posição aberta.
Eu uso a função Terminal() do tutorial ao fechar posições, desde que Mas_Ord_New[0][0]!=0. Mas temos outra tarefa aqui: devemos criar uma bandeira proibindo o comércio pelo sinal atual, se uma ordem já foi aberta por ela. Estou tentando usar bandeiras, mas cometi um erro de alguma forma.
Parny precisa de ajuda O que é isso?
2012.09.10 18:40:20 '6257743': pedido compra 5,00 EURUSD abertura a 1.27816 sl: 1.27791 tp: 1.27876 falhou [Inválido S/L ou T/P]
Também por que o preço e o fim da perda é o mesmo:
Preço 1.25618 Stop Loss 1.25618 Take Profit 1.25698
Tire Lucro 60 pips
Stop Loss 20
Olá. Tenho uma pergunta sobre indicadores personalizados. A descrição do iCustom diz:
Pergunta: como obter o valor de "turno" (ao chamar o indicador com um turno, ele usa os valores como sem ele, ou sejaiCustom(NULL, 0, "nome",pam1,0,1)= iCustom(NULL, 0, "nome",pam1,0,100), mas se eu chamar o indicador 100 barras atrás, ele terá um valor diferente do iCustom(NULL, 0, "nome",pam1,0,100). O indicador é simples, utiliza 5 valores fechados anteriores, toma sua média.
Serei grato por sua ajuda.
Você definiu o desvio da linha principal para 0 (zero). Deve ser mais do que zero.
Você definiria o desvio também como negativo?
Obrigado, camaradas! Exatamente! Eu estava muito ocupado trabalhando e não fazia a menor idéia. Gostaria de ter clicado no botão de agradecimento, para não me multiplicar. )
A propósito, seria útil recomendar aos novatos a passagem de parâmetros para indicadores através de variáveis com nomes eloqüentes. Até agora eu fiz isso, desta vez eu perdi algo.
Boa noite a todos!
Eu queria fazer a mesma pergunta e assumi a função a partir daqui https://www.mql5.com/ru/forum/131859
Eu recebo erros--->
Todas as variáveis da função são definidas dentro dela...o que está errado?
copiou-o, colou-o. --->
Lá não há erros:
Mas, você só precisa especificar uma cor, por exemplo -CLR_NONE.E parece que você tem este "pendurado no ar":
Na verdade, tal condição (Alta[2]==Alta[1 ]) ou tal(Fechar[2]==Alta[1 ]) ou tal(Alta[2]==Aberta[1 ]) é rara. Olhe para o gráfico, quantas dessas coincidências você encontrará?Em termos da lógica de remoção da ordem, ... - também sofre, em resumo.
copiou o código a partir daqui e criou um novo projeto (EA) colou o código -> compilado
Estranhamente, ainda dá os mesmos erros...
copiou o código a partir daqui e criou um novo projeto (EA) colou o código -> compilado
Estranhamente, ainda dá os mesmos erros...
Estive negociando manualmente, eurusd 5 min, verifique se você tem tempo....
quero construir uma EA com base nesta estratégia, só preciso fechar negócios com a condição _2 :), não consigo entender, tenho até uma função próxima e recebo erros o tempo todo.....