OrderSelect no bilhete foi feita anteriormente. O pedido está pendente. Como obter o pedido tornou-se comercializável, a não ser verificando o tipo de pedido em cada carrapato. Nos registros, este tempo é registrado, mas parece que o campo para este tempo na estrutura da ordem não é fornecido, ou estou errado? Quando mudamos o tipo de ordem, OrderTotal() e OrderHistoryTotal também não mudam, se eu entendi corretamente.
O resto das questões parecem ser claras para mim)
Você já tentou OrderOpenTime? Nem me lembro se ele muda quando uma posição é acionada.
Não sei quando é necessário verificar se a ordem pendente acionou cada tique(e não antes da ação chave ou a cada 1...5 min), mas o MT4 não tem outra maneira.
No MT5, é mais conveniente. Em OTT você descobre sobre a transação, se precisar trabalhar com listas você faz o processamento em OTT
datetime some_time=TimeCurrent();
externstring Symbol3 = ""; //Инструмент (""текущий по умолчанию)externdouble P=15; //Таймфреймint start()
{
//Инициализация переменныхbool FractalsUp=false;
bool FractalsDown=false;
int FractalsUpPrice=0;
int FractalsDownPrice=0;
int FractalsLimit=100;
double EMA=iMA(NULL,P,5,3,MODE_EMA,PRICE_CLOSE,0);
//Цикл сканирования последних свечей FractalsLimit, начиная с самых старых и заканчивая самыми последними.for (int i=FractalsLimit; i>=0; i--)
{
//Если на свече есть фрактал, значение будет больше нуля и будет равно самой высокой или самой низкой цене.double fu=iFractals(NULL,0,MODE_UPPER,i);
double fl=iFractals(NULL,0,MODE_LOWER,i);
//Если есть верхний фрактал, я сохраняю значение и устанавливаю true для переменной FractalsUp.if(fu>0)
{
FractalsUp=true;
FractalsDown=false;
FractalsUpPrice=fu;
if (((Close[0])>fu)&&(OrdersTotal() == 0)&&(Close[0]>Open[0])&&(Close[0]>High[1]&&(Close[0]>EMA)))
{
if ((OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)==true))
{
datetime Cd=OrderCloseTime();
int hd=+iBarShift(Symbol3,P,Cd)+1;
if (hd<=2)
{
return(-1);
}
}
metka1();
}
}
//Если есть нижний фрактал, я сохраняю значение и устанавливаю true для переменной FractalsDown.if(fl>0)
{
FractalsUp=false;
FractalsDown=true;
FractalsDownPrice=fl;
if (((Close[0])<fl)&&(OrdersTotal() == 0)&&(Close[0]<Open[0])&&(Close[0]<Low[1]&&(Close[0]<EMA)))
{
if ((OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)==true))
{
datetime Cd1=OrderCloseTime();
int hd1=+iBarShift(Symbol3,P,Cd1)+1;
if (hd1<=2)
{
return(-1);
}
}
metka2();
}
}
//Если свеча имеет верхний и нижний фрактал, значения сохраняются, но мы не считаем его последним фракталом.if(fu>0 && fl>0)
{
FractalsUp=false;
FractalsDown=false;
FractalsUpPrice=fu;
FractalsDownPrice=fl;
}
}
return(0);
}
int metka1()
{
int send1=OrderSend(Symbol3,OP_BUY,0.01,Ask,3,Bid-70*Point,Bid+70*Point);
return(0);
}
int metka2()
{
int send2=OrderSend(Symbol3,OP_SELL,0.01,Bid,3,Ask+70*Point,Ask-70*Point);
return(0);
}
Boa tarde!
Estou trabalhando em uma coruja sobre fractais. Há um problema. Ajuda. A essência é esta:
O script busca o último fractal superior ou inferior dos últimos 100 castiçais com variável [FractalsLimit=100;] e abre a posição BUY - se um fractal for quebrado, e vice-versa para SELL.
Os últimos 100 castiçais devem ser usados para encontrar o máximo ou mínimo de fractal e abrir uma posição. Ou seja, concentra-se apenas nos fractais máximos e mínimos, não nos últimos.
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
Você já tentou OrderOpenTime? Não me lembro se ele muda quando uma ordem pendente é acionada.
Não sei quando é necessário verificar cada tique(e não antes de ações-chave ou a cada 1...5...minutos) se uma ordem pendente foi acionada, mas não há outra maneira de fazê-lo no MT4.
No MT5, é mais conveniente. Na OTT, você aprende sobre a condução de uma transação. Se você precisar trabalhar com listas, você conduzirá o processamento na OTT.
OrderOpenTime mostra o tempo de abertura de pedidos pendentes. É uma questão de entender mais a operação. Portanto, a hora é escrita no diário de bordo e no diário e não é mostrada em nenhum outro lugar. Respectivamente, se ainda não o consertamos, então podemos vê-lo mais tarde, de acordo com o fato)))))
Se eu entendi corretamente, será a abertura de posição/trato no MT5. Embora eu não entenda a divisão em ordem/comércio/posição como uma solução ótima, há mais dados, é claro.
acontece))) 1 fica muito perdido no fundo das letras inglesas l i etc., é mais conveniente chamar então os sufixos 001, 2... etc.
Entendo o que você quer dizer) corrigiu o erro, agora o valor do segundo cabo é 1,0. Se você colocar um prazo maior no primeiro cabo do que no segundo cabo, o valor do segundo cabo é 0. Você pode me dizer o que mais eu preciso consertar para obter o valor do segundo cabo corretamente?
OrderOpenTime mostra o tempo de abertura da ordem pendente. É uma questão de entender mais a operação. Acontece que a hora é registrada no diário de bordo e no diário e não é refletida em nenhum outro lugar. Portanto, se não o consertamos, podemos procurar mais tarde, de acordo com o fato)))))
Há uma semana você vem levantando esta questão. Ofereci-me para rever os princípios de colocar ordens na estratégia comercial
mas se esta questão for importante para você, não é um problema "consertá-la" com um reajuste de um carrapato.
Se você quiser tentar, terá que fazê-lo com uma certa velocidade, mas se não tiver um tick real, provavelmente acabará com muitos erros, porque a velocidade de colocar pedidos pendentes é muito maior.
O que eu gostaria de propor para estudar é aCArrayInt SB https://www.mql5.com/ru/docs/standardlibrary/datastructures/carrayint
em CArrayInt você adicionará bilhetes e este tipo de dados permitirá apagar facilmente "bilhetes que se tornaram comercializáveis".
como eu escrevi acima - 1 tick, o código de verificação será mínimo
Valeriy Yastremskiy:
Na MT5 será uma abertura de posição / comércio, se eu entender corretamente. Embora eu não entenda a divisão para encomendar / negociar / posicionar como uma solução ótima, mas há mais dados, é claro.
Se você pode escrever para o MT5 - então porque estamos discutindo isso? a plataforma é mais poderosa, a funcionalidade é maior - comparar o MT4 e o MT5 não faz sentido, o MT4 é mais fácil de entrar, mas o MT5 tem mais características
Você vem levantando esta questão desde uma semana, sugeri que reconsiderasse os princípios de colocar ordens na estratégia comercial
Eu ainda não entendo. A estratégia é, naturalmente, diferente. A questão vem do fato de que um evento bastante importante só se reflete no registro. E ninguém respondeu diretamente que não há outro lugar senão o registro do tempo em que um pedido se tornou comercializável))))
E a lógica da estratégia não depende do terminal. Se a lógica for coxa, então você certamente poderá inventá-la, mas o coxear não irá embora))))
Ainda não está claro. A estratégia é, naturalmente, diferente. A questão vem do fato de que um evento bastante importante só se reflete no registro. E ninguém respondeu diretamente que não há outro lugar além do registro da época em que o pedido se tornou mercado))))
não esta informação - nooooo!!!
importância... bem, é importante para você, antes disso, quantos anos de estratégia de escrita e como ela funcionou, mesmo em lucro ;)
como regra, não colocar muitas ordens pendentes, seguir ordens de mercado, se necessário, adicionar uma ordem pendente - ordens pendentes tornam-se ordens de mercado
usamos tudo - média, pirâmide, grade de ordens e ... e muito... Eu não me lembro dessas anticasticas nos fóruns de comerciantes, eu não as leio há mais de um ano - eu tenho mais de meus próprios pensamentos do que os de outras pessoas ))))
importância... bem, é importante para você, antes disso, quantos anos de elaboração de uma estratégia e ela funcionaria, mesmo em lucro ;)
como regra, você não deve colocar muitas ordens pendentes, seguir as ordens de mercado, se necessário, adicionar uma ordem pendente - ordens pendentes tornam-se ordens de mercado
usamos tudo - média, pirâmide, grade de ordens e ... e muito... Se você não sabe, você deve ler estes truques nos fóruns de comerciantes, eu não faço isso há mais de um ano - eu tenho mais pensamentos próprios do que de outros ))))
Obrigado))))
Martin e o cálculo da média é auto-engano e proibitivo (porque você não pode calcular ou prever o risco pela definição das propriedades da BP))))) risco, que às vezes, mas apenas às vezes, é justificado))))
Se a estratégia estiver correta, uma ordem é suficiente))))
Se a estratégia estiver correta, uma ordem é suficiente))))
Se em seu TS o número de pedidos é estritamente definido, então você não deve ter problemas em determinar o que aconteceu com os pedidos pendentes no tick atual
Saber a hora exata não lhe dará nada - todas as informações são recebidas na chegada do tick - sem tick, sem informações
Olá, estou enfrentando um problema, como mudar os parâmetros de um indicador personalizado de um EA. O problema é que quando mudo qualquer parâmetro na lista de indicadores, uma nova cópia é criada. Quando vou às propriedades dessas cópias, cada cópia tem seu próprio parâmetro. Quanto mais eu altero o parâmetro, mais cópias são criadas. Eu o uso através do iCustom.
OrderSelect no bilhete foi feita anteriormente. O pedido está pendente. Como obter o pedido tornou-se comercializável, a não ser verificando o tipo de pedido em cada carrapato. Nos registros, este tempo é registrado, mas parece que o campo para este tempo na estrutura da ordem não é fornecido, ou estou errado? Quando mudamos o tipo de ordem, OrderTotal() e OrderHistoryTotal também não mudam, se eu entendi corretamente.
O resto das questões parecem ser claras para mim)
Você já tentou OrderOpenTime? Nem me lembro se ele muda quando uma posição é acionada.
Não sei quando é necessário verificar se a ordem pendente acionou cada tique(e não antes da ação chave ou a cada 1...5 min), mas o MT4 não tem outra maneira.
No MT5, é mais conveniente. Em OTT você descobre sobre a transação, se precisar trabalhar com listas você faz o processamento em OTT
Boa tarde!
Estou trabalhando em uma coruja sobre fractais. Há um problema. Ajuda. A essência é esta:
O script busca o último fractal superior ou inferior dos últimos 100 castiçais com variável [FractalsLimit=100;] e abre a posição BUY - se um fractal for quebrado, e vice-versa para SELL.
Os últimos 100 castiçais devem ser usados para encontrar o máximo ou mínimo de fractal e abrir uma posição. Ou seja, concentra-se apenas nos fractais máximos e mínimos, não nos últimos.
Você já tentou OrderOpenTime? Não me lembro se ele muda quando uma ordem pendente é acionada.
Não sei quando é necessário verificar cada tique(e não antes de ações-chave ou a cada 1...5...minutos) se uma ordem pendente foi acionada, mas não há outra maneira de fazê-lo no MT4.
No MT5, é mais conveniente. Na OTT, você aprende sobre a condução de uma transação. Se você precisar trabalhar com listas, você conduzirá o processamento na OTT.
OrderOpenTime mostra o tempo de abertura de pedidos pendentes. É uma questão de entender mais a operação. Portanto, a hora é escrita no diário de bordo e no diário e não é mostrada em nenhum outro lugar. Respectivamente, se ainda não o consertamos, então podemos vê-lo mais tarde, de acordo com o fato)))))
Se eu entendi corretamente, será a abertura de posição/trato no MT5. Embora eu não entenda a divisão em ordem/comércio/posição como uma solução ótima, há mais dados, é claro.
acontece))) 1 fica muito perdido no fundo das letras inglesas l i etc., é mais conveniente chamar então os sufixos 001, 2... etc.
Entendo o que você quer dizer) corrigiu o erro, agora o valor do segundo cabo é 1,0. Se você colocar um prazo maior no primeiro cabo do que no segundo cabo, o valor do segundo cabo é 0. Você pode me dizer o que mais eu preciso consertar para obter o valor do segundo cabo corretamente?
OrderOpenTime mostra o tempo de abertura da ordem pendente. É uma questão de entender mais a operação. Acontece que a hora é registrada no diário de bordo e no diário e não é refletida em nenhum outro lugar. Portanto, se não o consertamos, podemos procurar mais tarde, de acordo com o fato)))))
Há uma semana você vem levantando esta questão. Ofereci-me para rever os princípios de colocar ordens na estratégia comercial
mas se esta questão for importante para você, não é um problema "consertá-la" com um reajuste de um carrapato.
Se você quiser tentar, terá que fazê-lo com uma certa velocidade, mas se não tiver um tick real, provavelmente acabará com muitos erros, porque a velocidade de colocar pedidos pendentes é muito maior.
O que eu gostaria de propor para estudar é aCArrayInt SB https://www.mql5.com/ru/docs/standardlibrary/datastructures/carrayint
em CArrayInt você adicionará bilhetes e este tipo de dados permitirá apagar facilmente "bilhetes que se tornaram comercializáveis".
como eu escrevi acima - 1 tick, o código de verificação será mínimo
Na MT5 será uma abertura de posição / comércio, se eu entender corretamente. Embora eu não entenda a divisão para encomendar / negociar / posicionar como uma solução ótima, mas há mais dados, é claro.
Se você pode escrever para o MT5 - então porque estamos discutindo isso? a plataforma é mais poderosa, a funcionalidade é maior - comparar o MT4 e o MT5 não faz sentido, o MT4 é mais fácil de entrar, mas o MT5 tem mais características
Você vem levantando esta questão desde uma semana, sugeri que reconsiderasse os princípios de colocar ordens na estratégia comercial
Eu ainda não entendo. A estratégia é, naturalmente, diferente. A questão vem do fato de que um evento bastante importante só se reflete no registro. E ninguém respondeu diretamente que não há outro lugar senão o registro do tempo em que um pedido se tornou comercializável))))
E a lógica da estratégia não depende do terminal. Se a lógica for coxa, então você certamente poderá inventá-la, mas o coxear não irá embora))))
Ainda não está claro. A estratégia é, naturalmente, diferente. A questão vem do fato de que um evento bastante importante só se reflete no registro. E ninguém respondeu diretamente que não há outro lugar além do registro da época em que o pedido se tornou mercado))))
não esta informação - nooooo!!!
importância... bem, é importante para você, antes disso, quantos anos de estratégia de escrita e como ela funcionou, mesmo em lucro ;)
como regra, não colocar muitas ordens pendentes, seguir ordens de mercado, se necessário, adicionar uma ordem pendente - ordens pendentes tornam-se ordens de mercado
usamos tudo - média, pirâmide, grade de ordens e ... e muito... Eu não me lembro dessas anticasticas nos fóruns de comerciantes, eu não as leio há mais de um ano - eu tenho mais de meus próprios pensamentos do que os de outras pessoas ))))
não existe tal informação - nooooo!!!
importância... bem, é importante para você, antes disso, quantos anos de elaboração de uma estratégia e ela funcionaria, mesmo em lucro ;)
como regra, você não deve colocar muitas ordens pendentes, seguir as ordens de mercado, se necessário, adicionar uma ordem pendente - ordens pendentes tornam-se ordens de mercado
usamos tudo - média, pirâmide, grade de ordens e ... e muito... Se você não sabe, você deve ler estes truques nos fóruns de comerciantes, eu não faço isso há mais de um ano - eu tenho mais pensamentos próprios do que de outros ))))
Obrigado))))
Martin e o cálculo da média é auto-engano e proibitivo (porque você não pode calcular ou prever o risco pela definição das propriedades da BP))))) risco, que às vezes, mas apenas às vezes, é justificado))))
Se a estratégia estiver correta, uma ordem é suficiente))))
Se a estratégia estiver correta, uma ordem é suficiente))))
Se em seu TS o número de pedidos é estritamente definido, então você não deve ter problemas em determinar o que aconteceu com os pedidos pendentes no tick atual
Saber a hora exata não lhe dará nada - todas as informações são recebidas na chegada do tick - sem tick, sem informações
Olá, estou enfrentando um problema, como mudar os parâmetros de um indicador personalizado de um EA. O problema é que quando mudo qualquer parâmetro na lista de indicadores, uma nova cópia é criada. Quando vou às propriedades dessas cópias, cada cópia tem seu próprio parâmetro. Quanto mais eu altero o parâmetro, mais cópias são criadas. Eu o uso através do iCustom.
Por exemplo:
#resource "Indicator.ex4inicator.ex4"
Var1=1;
//------------------------------------------
nulo OnTick()
{
int A;
Var1++;
A=iCustom(Symbol(),PERIOD_CURRENT,"::Indicadores",Var1,0,0);
Como resultado, vemos na lista de indicadores:
Indicador (com parâmetro Var1=2)
Indicador (com parâmetro Var1=3)
Indicador (com parâmetro Var1=4)
.... etc.