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

 
Порт-моне тв ordens pendentes para atualizar seu valor a cada minuto, a modificação de algo estava torta, decidi apagar e definir cada minuto em ambas as direções, no testador funciona bem, mas na vida real, de alguma forma, não entrega. Corrigir ou ajudar em vez de apagar, modificar para fazer.


É melhor voltar à modificação, explicar o que é necessário
 
Tretyakov Rostyslav #:
É melhor voltar à modificação, explicar o que é necessário

A ordem deve ser modificada a cada vez em um novo castiçal em ambas as direções com um travessão definido em pontos e em takeprofit (como um clássico), se penetrar (um avanço nas notícias), então a ordem abre (a segunda ordem pode ser fechada automaticamente), mas até abrir, depois modificar novamente e novamente; e tudo isso dentro de um determinado prazo especificado nos parâmetros do assessor.

 
Порт-моне тв #:

A ordem deve ser modificada cada vez em um novo castiçal em ambas as direções com um travessão especificado em pontos e em takeprofit (como um clássico), se penetrar (um avanço nas notícias), então a ordem abre (a segunda ordem pode ser fechada automaticamente), mas até abrir, então modificar novamente e novamente; e tudo isso dentro de um determinado período de tempo especificado nos parâmetros da EA.

E como são feitas as primeiras encomendas?
 
Tretyakov Rostyslav #:
Como são feitos os primeiros pedidos?
if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsSellAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_SELLSTOP, LotSk, Bid-(Skachok*Point), Slippage, 0, Bid-((Skachok+TPsk)*Point), "открыт ордер на продажу", Magic, 0, Red);
                  Print("OpenOrderSuccess");
                  
            if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsBuyAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_BUYSTOP, LotSk, Ask+(Skachok*Point), Slippage, 0, Ask+((Skachok+TPsk)*Point), "открыт ордер на покупку", Magic, 0, Blue);
                  Print("OpenOrderSuccess");
 
Порт-моне тв #:
Deixe-me dar uma olhada.
 
Порт-моне тв #:
Você tem a mesma condição para ambos os tipos de pedido
if(Close[1]>Open[1] && CountOrders()==0)
 
Tretyakov Rostyslav #:
Você tem a mesma condição para ambos os tipos de pedido

é assim que eu quero, de ambas as maneiras, ou preciso acrescentar algo?

 
Порт-моне тв #:

é assim que eu quero, de ambas as maneiras, ou preciso acrescentar algo?

Aqui...modificação uma vez na abertura do bar

Quanto à abertura, se você comercializar nas notícias, então "Fechar[1]>Abrir[1]" não é de todo necessário.

de um lado "Close[1]>Open[1]", e do outro lado "Close[1]<Open[1]".

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Close[1]>Open[1] && CountOrders()==0)
     {
      if(NewsSellAllow == true)
        {
         ticket2 = OrderSend(Symbol(),OP_SELLSTOP, LotSk, Bid-(Skachok*Point), Slippage, 0, Bid-((Skachok+TPsk)*Point), "открыт ордер на продажу", Magic, 0, Red);
         Print("OpenOrderSuccess");
        }
     }
   if(Close[1]>Open[1] && CountOrders()==0)
     {
      if(NewsBuyAllow == true)
        {
         ticket2 = OrderSend(Symbol(),OP_BUYSTOP, LotSk, Ask+(Skachok*Point), Slippage, 0, Ask+((Skachok+TPsk)*Point), "открыт ордер на покупку", Magic, 0, Blue);
         Print("OpenOrderSuccess");
        }
     }
   if(newbar!=Time[0])
     {
      ModifyOrder();
      newbar=Time[0];
     }
  }
//+------------------------------------------------------------------+
//| Подсчет открытых ордеров                                         |
//+------------------------------------------------------------------+
int CountOrders(int ot=-1) 
  {
   int cnt=0;
   int i=OrdersTotal()-1;
   for(int pos=i;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol&&OrderMagicNumber()==Magic)
           {
            if(OrderType()==ot||ot==-1) cnt++;
           }
        }
     }
   return(cnt);
  }
//+------------------------------------------------------------------+
//| Модификация ордера                                               |
//+------------------------------------------------------------------+
void ModifyOrder()
  {
   int i=OrdersTotal()-1;
   for(int pos=i;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol&&OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUYSTOP&&OrderOpenPrice()!=Ask+(Skachok*Point))
              {
               if(OrderModify(OrderTicket(), Ask+(Skachok*Point), 0, Ask+((Skachok+TPsk)*Point)))
                 {Print("Ордер модифицирован");}
               else
                 {Print("Ошибка модификации ордера:", GetLastError());}
              }
            if(OrderType()==OP_SELLSTOP&&OrderOpenPrice()!=Bid-(Skachok*Point))
              {
               if(OrderModify(OrderTicket(), Bid-(Skachok*Point), 0, Bid-((Skachok+TPsk)*Point)))
                 {Print("Ордер модифицирован");}
               else
                 {Print("Ошибка модификации ордера:", GetLastError());}
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
 
Tretyakov Rostyslav #:

Aqui...modificação uma vez na abertura do bar

Quanto à abertura, se você comercializa nas notícias, então "Fechar[1]>Abrir[1]" não é de todo necessário, e se a vela tem um valor, então

de um lado "Close[1]>Open[1]", e do outro lado "Close[1]<Open[1]".

Obrigado, vou tentar amanhã de manhã.

 

Saudações. Você pode me dizer como conectar uma EA a uma dll em C# ?

Estou criando uma aplicação e uma biblioteca

A partir dos trabalhos de aplicação

EA

#property strict

#import "C:\Users\Андрей\source\repos\ConsoleAppForMql\ClassLibraryForMql\bin\Debug\ClassLibraryForMql.dll"
void Method();
#import

int OnInit(){

Print("  до вызова Method()");
Method();


return(INIT_SUCCEEDED);}

void OnDeinit(const int reason){

}
void OnTick(){

}

Saídas

Presumo que não possa encontrar Método(), pois está dentro da classe ClassForMql, mas não está claro como especificá-lo.

Razão: