Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1331

 
Aleksei Stepanenko:
Desculpe, fui apanhado na conversa aqui, não notei...

Um tema comum e seus códigos são sempre interessantes...

tomou muito para mim)

 
Iurii Tokman:
MakarFX:

.

 
Iurii Tokman:

A tarefa técnica é melhor compreendida em ucraniano

Eu ainda não estou nesse nível, minha língua materna é o russo :)

...mas eu entendo isso em um nível casual
 
Aleksei Stepanenko:

Eu ainda não tenho esse nível, meu primeiro idioma é o russo :)

Eu sou da URSS... Tenho duas línguas maternas)
 
MakarFX:
Eu sou da URSS...eu tenho duas línguas maternas)
.
 
MakarFX:
Eu sou da URSS... Tenho duas línguas maternas)

e nós temos três, ainda surzhik.

 
DanilaMactep:

Não sou muito bom em matemática - como posso calcular a distância do pedido aberto para parar no código, para que eu possa substituir sl por este?

Anormalizou o valor do lote desta forma

Então, resta entender como calcular a distância desde o preço aberto até a parada no código?

O valor absoluto da diferença entre o preço aberto e o preço de parada deve ser dividido pela etapa de preço.

  int sl = fabs(OrderOpenPrice()-OrderStopLoss())/_Point;

E este valor vai para a fórmula.

Considerando que você coloca uma parada calculada pelo indicador ATR, é suficiente para

double lot =MathFloor((Free*MaxRisk/100)/(sl/_Point*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА
E este já será o tamanho de lote normalizado.
 
MakarFX:

preço de abertura da compra

comprar stop loss

divulgação

Agora eu entendo, só tenho que entender que valor devo atribuir para comprar e vender preços.

OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,"ДИВЕРГЕНЦИЯ НА БАЙ АО"); // ОТКРЫВАЕМ БАЙ ОРДЕР

OrderSend(Symbol(),OP_SELL,lot,Bid,slippages,Ask+sl,Ask-tp ,"ДИВЕРГЕНЦИЯ НА СЕЛ АО"); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР

Em outras palavras, atribuo Ask ao preço aberto de compra, f ao preço aberto de venda que atribuo Bid?

 
DanilaMactep:

No código, eu abro uma ordem da seguinte maneira.

Você quer dizer que eu atribuo Ask ao preço aberto de compra e Bid à variável de preço aberto de venda?

OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,"ДИВЕРГЕНЦИЯ НА БАЙ АО"); // ОТКРЫВАЕМ БАЙ ОРДЕР

A julgar por esta função, você já sabe o fim da perda... Não entendo qual é a questão

 
Alexey Viktorov:

Dividir o valor absoluto da diferença entre o preço aberto e o preço de parada pela etapa de preço.

e este valor de sl irá para a fórmula.

Considerando que você coloca uma parada calculada pelo indicador ATR, é suficiente para

E esse seria o tamanho de lote normalizado.

Eu o fiz por código, como você aconselhou. No início do código, tenho a condição de escolher o tipo de parada - atp ou fixa.

if(tip_sl==en_po_atr)
     { //ЕСЛИ ТИП СТОП ЛОССА СТОИТ ПО АТР ТО ВЫСЧИТЫВАЕМ ЕГО ИЗ АТР
     //Print("СТОП ПО АТР, ЕГО РАЗМЕР ");
     sl= iATR( NULL,PeriodForWork_sl,atr_sl_period,1);// ПОЛУЧЕНИЕ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      Print("СТОП ПО АТР, ЕГО РАЗМЕР "+sl);
     }
     else //ИНАЧЕ- ТО ЕСТЬ ЕСЛИ СТОП ЛОСС ФИКСИРОВАННЫЙ В ПУНКТАХ
     {
     Print("СТОП ЛОС ФИКСИРОВАННЫЙ В ПУНКТАХ");
     sl= razmer_fikc_sl*Point; // ПЕЕРМЕННОЙ СТОП ЛОССА ПРИСВАЕВАЕМ ФИКСИРОВАНОНЕ ЗНАЧЕНИЕ ПУНКТОВ И ДОМНОЖАЕМ НА ПОИНТ
     }

Então eu comentei minha normalização e a atribuí desta forma

     sl = fabs(OrderOpenPrice()-OrderStopLoss())/_Point;// ПРИСВОИЛ ЗНАЧЕНИЕ КАК СОВЕТОВАЛИ
     //sl= NormalizeDouble(sl,Digits());// НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ СТОП ЛОССА ДЛЯ ОТКРЫТИЯ СДЕЛКИ ТО  ЧТО БЫЛО ЗАКОМЕНТИРОВАЛ

O cálculo do lucro é o próximo no código. Sem problemas e depois de calcular o lucro adicionei a fórmula assustadora que fui aconselhado a usar.

double lot =MathFloor((Free*MaxRisk/100)/(sl/Point*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА КОТОРУЮ МНЕ СОВЕТОВАЛИ

Tudo foi compilado sem erros. Mas quando eu executei o teste o erro aparece no registro, é dividido por zero até onde eu entendo e o teste é interrompido. Onde eu fiz asneira aqui ou o que não fiz direito?

ERRO NO INÍCIO DO TESTE