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

 

Ainda abre esta ordem em um lote.

é assim que eu defino as variáveis no meu ekspert

extern int TakeProfit=18;
extern int StopLoss=18;
extern double Lot=0.01;
extern int StartTime=0;
int Today=0;
int h=10;
int h1=26;
int mag=777;
bool b=0,s=0, //соответственно бай или селл  
bs=0,// если закрытие по стоплоссу ордера бай
ss=0,// если закрытие по стоплоссу ордера sell
bt=0,
st=0;//      то же по ТП
double bl=0,sl=0; // лоты соответсвенно для бай и селл

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{


if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
int total = OrdersTotal();
if(total == 0)



   {NewOrder(OP_BUY,Lot);
    NewOrder(OP_SELL,Lot);
    NewOrder(OP_BUYLIMIT,Lot);
    NewOrder(OP_SELLLIMIT,Lot);
    NewOrder(OP_BUYSTOP,Lot);
    NewOrder(OP_SELLSTOP,Lot);
    Today=TimeDay(TimeCurrent());}
    
{



for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
     {
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol()) 
{ if (OrderType() == OP_BUY )  {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1;
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL)  {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; 
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
            }
         }
      }


}//end

if(bs==1||bl==1)
{   
    NewOrder1(OP_BUYLIMIT,Lot);
Today=TimeDay(TimeCurrent());}
    

e aqui está a abertura do pedido

int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
double LT=0; //Лот
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUYLIMIT)
   {PR=Ask-Point*h;
    if(TakeProfit>0) TP=PR+TakeProfit*Point;
    if(StopLoss>0) SL=PR-StopLoss*Point;
    if(Lot>0) LT=3*Lot;}
int tic1=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE);
//-----------
if(tic1<0) Print(GetLastError());

if(tic1>0){
b=0;s=0; //соответственно бай или селл  
bs=0;// если закрытие по стоплоссу ордера бай
ss=0;// если закрытие по стоплоссу ордера sell
bt=0;
st=0;//      то же по ТП
bl=0;sl=0; // лоты соответсвенно для бай и селл
}
//-----------
return(tic1);}
 
profitinvesting:

Você poderia me dar o código da função que irá parar uma vez no nível de breakeven, quando o lucro será, por exemplo, 20 pips

Obrigado antecipadamente pela resposta:)

Você pode encontrá-lo e muitas outras funções úteis no site de Igor Kim http://www.kimiv.ru. E a que você precisa se chama MovingInWL(), se não estou enganado.
 
ToLik_SRGV:

Boris, é ainda mais simples do que isso. Você deixa cair esta linha:

No topo do código (para ser separado, não em nenhuma função).
E então naqueles lugares onde há uma chamada da função OrderSend(...), basta anexá-la em um abraço adicional do se operador

Agora, antes de abrir o próximo pedido, o operador verificará se há ou não negócios no bar atual. Se foram, então a barra atual foi armazenada na variável nova e se a barra atual coincide com a armazenada, então nenhuma posição será aberta. Assim, se a barra for nova, então seu tempo de abertura não coincidirá com os dados da variável nova, o negócio será aberto e a variável nova receberá um novo valor.

Não conheço exatamente a arquitetura de sua EA, mas este método deve funcionar na maioria dos casos.


Muito obrigado! Encaixa perfeitamente!
 

Não consigo pensar em uma maneira melhor de proceder.

Há um indicador com um monte de matrizes. O segundo indicador precisa trabalhar com estas matrizes. Para calcular e emitir o resultado para sua própria tabela.

A maneira mais fácil seria chamar esse indicador, mas parece que isso não é possível.

Como chegar a outras matrizes?

 
Abzasc:

Eu não sei.

Eu peguei.
 
LAIT123:

Olá, você poderia me dizer como visualizar os logs no MT4?

Você não precisa postar 15 mensagens com apenas um conteúdo. E se você o fizer, é desejável limpar depois de si mesmo. Não espere pelos tios.
 
artmedia70:

Você deve realmente precisar dele... :) Ou o mouse está preso...



Não é o rato que está preso. É a impaciência. Levei 20 minutos para apagar 15 postos no final.
 
Vinin:

Não é o rato que está preso.
Ele pensou que era uma sala de bate-papo :)
 
FoxUA:

Ainda abre esta ordem em um lote.

é assim que eu defino as variáveis no meu ekspert

e aqui está a abertura do pedido

Não entendo de todo como se sente... Os suportes não combinam entre si, falta um suporte de fechamento. Eu não sei o que está acontecendo. Limpe seu código... É difícil lidar com isso, e não há como compilá-lo e executá-lo - estamos trabalhando em nossos próprios códigos...
 
Vinin:

Não é o rato que está preso. É a impaciência. Levei 20 minutos para apagar 15 postos no final.
:) A impaciência é normalmente praticada em outro escritório. :)