[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 277
Mesmo assim, o código não funcionou, fez toda a ação em 2 velas. e teve que aprender que a posição já tem mais não abre ... porque abriu de todo que eu poderia todo o depósito usado(( Rid look, talvez o que mais você precisa acrescentar ... seria muito grato
Mesmo assim, o código não funcionou, eu fiz todos os ofícios em 2 castiçais.
Sim, de fato....
Esqueci de colocar o magik no arquivo ORDERSEND.
Agora está funcionando bem. Verificado. Não pode haver mais do que dois ofícios dirigidos de maneira diferente ou não pode haver mais do que um ofício unidirecional.
Se não for necessário mais de um negócio de qualquer tipo, é necessário em f-ki NumberOfPositions(c) substituir o tipo de negócio por -1 (menos um)
Entendi. Para determinar se houve posições sobre a história, você pode fazer isso:
Mas então seu código só funcionará no testador. Caso contrário, você teria que mudar o magik toda vez que ligar o EA online.
Exatamente, isso é exatamente o que precisamos!
Por favor, informe como inserir este código corretamente nesta grade:
(Se eu o colocar diretamente, o testador apenas pára na abertura da primeira posição)
for(int i=0; i<OrdersTotal(); i++){if(!(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY )))continue;//выбираем из истории счетаif(OrderSymbol()!=Symbol())continue;if(OrderMagicNumber()== Magic){
позиции =true;}}//Открытие позиции:bool Open_Buy(){bool res=false;if( условие_1){if( советник еще не открывал позиций с Магическим номером){
res=true;}}else{if( условие_1){if( условие_2 опирается на данные прошлого ордера){
res=true;}}}return( res);}
//==================Закрытие позиций ============================//----------------------------------------------------------------------for(int v=0; v<OrdersTotal(); v++){if(OrderSelect( v, SELECT_BY_POS, MODE_TRADES)){if(OrderSymbol()==Symbol()&&OrderMagicNumber()== Magic){//----------------------------------------------------- if(OrderType()==OP_BUY){// если открыта бай-позиция if( вот здесь вставляй свои условия закрытия){OrderClose(OrderTicket(),OrderLots(),Bid,3,Вlack);// закрываем позицию}}//--------------------------------------------------------if(OrderType()==OP_SELL){// если открыта селл-позиция if( вот здесь вставляй свои условия закрытия){OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);// закрываем позицию}}//------------------------------------------------------- }// Symbol() }// select}//total//------------конец блока закрытия позиций-----------------
Este bloco deve ser inserido dentro da função START, talvez logo no início, logo após o cálculo de Ema_1,Ema_2,Ema_3. E, aparentemente, é necessário fazer com que o assessor trabalhe por PREÇOS ABERTOS, caso contrário, a travessia MA fechará constantemente as posições abertas em quase todos os tick.
E da maneira como você fez - não funcionaria corretamente on-line, porque a EA fechará todas as posições, mesmo aquelas abertas por outra EA ou manuais.
Mas já escrevi como simplificá-lo ainda mais. Em vez de NumberOfPositions(NULL,OP_BUY,Magic) e em vez de NumberOfPositions(NULL,OP_SELL,Magic) ao abrir posições, basta definir
NúmeroOdePosições(NULL,-1,Magia)
e então não haverá mais do que uma posição no mercado o tempo todo. Sem nenhum bloco de fechamento.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
https://docs.mql4.com/ru/array/ArrayResize
Sim, de fato. Deu uma olhada, mas não o viu.
Obrigado (risos)
Hoje estou diminuindo meu ritmo. Precisa descansar para o fim de semana.
É mais ou menos isso...
Obrigado!!! Eu estarei usando....
DDFedor
Rid
Obrigado.
Mesmo assim, o código não funcionou, fez toda a ação em 2 velas. e teve que aprender que a posição já tem mais não abre ... porque abriu de todo que eu poderia todo o depósito usado(( Rid look, talvez o que mais você precisa acrescentar ... seria muito grato
Ajuda. Quero um EA que negociará à noite. Estou escrevendo código
int start()
{
string Symb;
Symb=Symbol();
string Vremya;
Vremya=TimeToStr(TimeLocal(),TIME_MINUTES);
if(Vremya > 23:00 || Vremya < 06:00 )
{
// тут торговые функции
}
}
Ele gera um erro
||' - a condição não pode ser um fio
E se a condição for encurtada para
if(Vremya > 23:00
funcionará,
E se for para
if(Vremya < 06:00 )
não vai funcionar.
Eu não entendo o que está errado. Você pode me dizer como marcar o horário?
Mesmo assim, o código não funcionou, eu fiz todos os ofícios em 2 castiçais.
Sim, de fato....
Esqueci de colocar o magik no arquivo ORDERSEND.
Agora está funcionando bem. Verificado. Não pode haver mais do que dois ofícios dirigidos de maneira diferente ou não pode haver mais do que um ofício unidirecional.
Se não for necessário mais de um negócio de qualquer tipo, é necessário em f-ki NumberOfPositions(c) substituir o tipo de negócio por -1 (menos um)
Por favor, diga-me o que a função iTime mostra.
O que é essa algaraviada de 10 dígitos? Segundos?
Como traduzi-los em ano-mês-dia-hora-minuto?
>> Assim: basta definir o deslocamento de barras e obter a hora e data padrão (se hora=1 ou verdadeira, você obtém apenas a hora).
Recurso muito útil, eu o recomendo.
Eu tentei ajustar o segundo nível, mas não funcionou.
Eu tentei fazer isso, mas ele abriria e fecharia uma ordem imediatamente após o teste.
Entendi. Para determinar se houve posições sobre a história, você pode fazer isso:
Mas então seu código só funcionará no testador. Caso contrário, você teria que mudar o magik toda vez que ligar o EA online.
Exatamente, isso é exatamente o que precisamos!
Por favor, informe como inserir este código corretamente nesta grade:
(Se eu o colocar diretamente, o testador apenas pára na abertura da primeira posição)
Eu tentei ajustar o segundo nível, mas não funcionou.
Parece ser bastante lógico, mas no teste ele abre e cobre os pedidos de uma só vez
Lidei com posições de fechamento em minha época aqui -
https://www.mql5.com/ru/forum/105913
Este bloco deve ser inserido dentro da função START, talvez logo no início, logo após o cálculo de Ema_1,Ema_2,Ema_3.
E, aparentemente, é necessário fazer com que o assessor trabalhe por PREÇOS ABERTOS, caso contrário, a travessia MA fechará constantemente as posições abertas em quase todos os tick.
E da maneira como você fez - não funcionaria corretamente on-line, porque a EA fechará todas as posições, mesmo aquelas abertas por outra EA ou manuais.
Mas já escrevi como simplificá-lo ainda mais. Em vez de NumberOfPositions(NULL,OP_BUY,Magic) e em vez de NumberOfPositions(NULL,OP_SELL,Magic) ao abrir posições, basta definir
NúmeroOdePosições(NULL,-1,Magia)
e então não haverá mais do que uma posição no mercado o tempo todo. Sem nenhum bloco de fechamento.