[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 424

 
sergeev >>:

приведите здесь вашу функцию открытия ордеров.

int NewOrder(int Cmd,double Lot)

{douplo TP=0, TP2=0;

duplo SL=0, SL2=0;

duplo PR=0;

data/hora de término;


enquanto(!IsTradeAllowed()) Sleep(100);

tempo final = TimeCurrent()+4*60*60;


if(Cmd == OP_BUYSTOP)

{

PR=TOP+10*Point;

PR=NormalizeDuplo(PR,2);

if(TakeProfit>0)

{

TP=PR+25*Point;

}

if(StopLoss>0)

{

SL=PR-30*Point;

SL=NormalizeDouble(SL,2);

}

}

if(Cmd==OP_SELLSTOP)

{

PR=BOT-7*Point;

PR=NormalizeDuplo(PR,2);

if(TakeProfit>0)

{

TP=PR-25*Point;

}

if(StopLoss>0)

{

SL=PR+30*Point;

SL=NormalizeDouble(SL,2);

}

}

se ((TOP-BOT)<115*Ponto)

int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,",0,endtime,CLR_NONE);

senão

Imprimir("Grande diferença entre TOR e BOT: ",(TOP-BOT));

if(tic<0) Print("Order opening error: ",GetLastError();


retorno(tique);

 
sanyooooook >>:

а ордер как закрывается? по стоп лосту или функцией OrderClose()

em stop loss or take profit.

 

Olá a todos...tenho uma pergunta...onde posso ver um relatório de transação...total para todo o período de trabalho...?

 
sergeev >>:
В принципе можно искать ордера в истории и отсортировать их, затем узнать два последних закрытия. Но это вам надо пройтись по всем ордерам истории два раза.

используйте OrderHistoryTotal(), MODE_HISTORY, OrderCloseTime()>0, OrderProfit()

Другим вариантом - чтоб не сканировать два раза историю - это запоминание тикетов открывшихся ордеров и потом определения их профита.

Como exatamente você memoriza os bilhetes? E como você entende: para acessar um bilhete, você precisa selecionar um pedido, e para selecioná-lo, você precisa conhecer o bilhete...

 
just-me >>:

А как именно запоминать тикеты? И как понимать: чтоб обратиться к тикету - нужно выбрать ордер, а чтоб его выбрать - нужно знать тикет...

você não precisa conhecer o bilhete para selecionar um pedido

 

Estou confuso com a função de informação de mercado e não consigo calcular o valor correto de spread para um instrumento na moeda de depósito com um determinado tamanho de lote. Você pode sugerir uma fórmula correta? Preciso dele tanto para spot como para CFD.

 

Tenho uma pergunta para os especialistas - é possível fazer uma constante, o primeiro valor de preço recebido quando eu inicio o Expert Advisor?

Quero economizar este preço como uma constante, para que todo o tempo em que a EA estiver funcionando, eu possa me referir a ela. A única pergunta é: como fazer isso? Porque Ask está em constante mudança, e não consigo encontrar a função de cópia.

 

fazer uma variável global ou apenas uma variável

e inseri-lo não na função inicial, mas na função init

int init()
  {
//----
   GlobalVariableSet("Price_Start",Ask);
//----
   return(0);
  }
 
Kesha_k85 >>:

У меня такой вопрос к спецам - есть ли возможность сделать константой, первое полученное значение цены при запуске советника?

Т.е если я запустил советник и в это время цена Ask=1.4444 Я хочу эту цену сохранить как константу, чтобы всё время работы советника можно было к ней орбащаться. Только вот вопрос, как это сделать??? Ведь Ask постоянно меняеться, а функции копирования я нигде не нашёл.


Uma variação sobre o tema.


double Price_Start;

int init()
 {
   Price_Start=Ask;
   return(0);
 }


double Price_Start=0;

int start()
 {
   if ( Price_Start<0.001) Price_Start=Ask;
   //....
 }
 
just-me писал(а) >>

Como exatamente você memoriza os bilhetes? E como você entende: para se referir a um bilhete, você precisa selecionar um pedido, e para selecioná-lo, você precisa conhecer o bilhete...

https://docs.mql4.com/ru/trading/OrderSelect - ver SELECT_BY_POS