Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 848

 
Como posso prescrever nos códigos dos meus EAs que eles funcionem com cada um dos meus pares de moedas? não sei dizer se tenho um símbolo diferente ou se tenho um par de moedas diferente.
 
logut:
Como posso prescrever nos códigos dos meus EAs que eles funcionem com cada um dos meus pares de moedas? Eu tenho um símbolo diferente, mas não funciona.
Não tenho certeza se estou usando um único símbolo para um par de moedas diferente, mas o mesmo símbolo é suficiente.
 
Olá. Eu escrevi um EA, ele mostra bons resultados no testador. Compila sem erros. Está anexado ao euro dólar.
No comércio real não se abre, quando aparecem as condições para abrir um comércio, ele dá uma mensagem:
2015.02.11 14:03:03.656 '1435109': pedido de compra 0,01 EURUSD abertura no mercado sl: 1,12697 tp: 1,13747 falhou [Inválido S/L ou T/P]
Pelo que entendi, isto significa que esta não é uma parada ou tomada válida. Um pedido com determinadas paradas e tomadas é feito manualmente. Há uma distância entre o preço e a parada
Há várias vezes mais distância entre o preço e o ponto. Todos os cálculos da parada e da corrente são normalizados. Qual pode ser a razão, eu não entendo, por favor, me ajude a entender.
Aqui está o programa:
int start()
{
//------------------------------------------------------------------------------------------------

se (OrdensTotal()>0)
retornar;
double monymax8=High[ArrayMaximum(High,3,0)];
se (removi a condição em si porque não é a razão, já que o programa chega à função OrderSend)

{ double stop_sell8=monymax8+Point;
double STOP_S8=NormalizeDouble(stop_sell8,Digits);
double profit_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid);
double PROFIT_S8=NormalizeDouble(profit_sell8,Digits);
double my_lot8=AccountBalance()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000;
double LOT8=NormalizeDouble(my_lot8,2);
OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8);
}
//------------------------------------------------------------------------------------------------
retornar;
}

 
Rogoza:
Olá. Eu escrevi um EA, ele mostra bons resultados no testador. Compila sem erros. Está anexado ao euro dólar.
No comércio real não se abre, quando aparecem as condições para abrir um comércio, ele dá uma mensagem:
2015.02.11 14:03:03.656 '1435109': pedido de compra 0,01 EURUSD abertura no mercado sl: 1,12697 tp: 1,13747 falhou [Inválido S/L ou T/P]
Pelo que entendi, isto significa que esta não é uma parada ou tomada válida. Um pedido com determinadas paradas e tomadas é feito manualmente. Há uma distância entre o preço e a parada
Há várias vezes mais distância entre o preço e o ponto. Todos os cálculos da parada e da corrente são normalizados. Qual pode ser a razão, eu não entendo, por favor, me ajude a entender.
Aqui está o programa:
int start() 
 {
 
//------------------------------------------------------------------------------------------------
if (OrdersTotal()>0)
   return;
   
   double monymax8=High[ArrayMaximum(High,3,0)];
   
       
        if (само условие я убрал так как не в нём причина, раз программа доходит до функции  OrderSend)
        {   double stop_sell8=monymax8+Point;
            double STOP_S8=NormalizeDouble(stop_sell8,Digits);
            double profit_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid);
            double PROFIT_S8=NormalizeDouble(profit_sell8,Digits);
            double my_lot8=AccountBalance()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000;
            double LOT8=NormalizeDouble(my_lot8,2);
           
             
           OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8);
            
                   
        }
      
 //------------------------------------------------------------------------------------------------
   return;
 } 

Formate seu código desta forma. Há um botão SRC para isso.

Ela não abre porque nestes tipos de conta, as ordens sem paradas são abertas primeiro, e depois OrderModify()

 
evillive:
O magik só é necessário se houver vários "comerciantes" sobre o mesmo símbolo, mas isso é suficiente para verificar o símbolo.
Entendo. Agora o que me preocupa é como fazer a EA em várias moedas?
 
AlexeyVik:

Formate seu código desta forma. Existe o botão SRC para este fim.

Ela não abre porque nestes tipos de conta, as ordens sem paradas são abertas primeiro, e depois OrderModify()

Muito obrigado! Vou reescrever o código.
 
logut:
Agora minha pergunta é como fazer a EA multi-moeda ???
Abra um kodobase, encontre ali um EA em várias moedas e descubra como ele funciona.
 

Geralmente, estou realmente perplexo com alguma coisa e não consigo descobrir como fazer isso.

Eu tenho variáveis linha1,linha2,linha3 etc. Quero contar o valor para cada variável através da declaração de loop.

Como fazer uma enumeração correta da linha de variáveis? Eu tentei fazer isso como "linha "+"i", mas isso se revela um absurdo, é claro.

for(int i=1;i<=111111111111;i++)
        {
            if("line"+"i">0)counter++;
        }
 
Provavelmente, é melhor fazer uma linha de matriz[] e depois passar por ela.
 

Por que ele está exibindo o objeto errado? Deve serum triângulo apontando para a esquerdahttps://docs.mql4.com/ru/constants/objectconstants/arrows código 3, mas aparece uma seta apontando para cima código 241 dos Reinos.

obj

Código do programa (tenhoObjectSet(objName, OBJPROP_ARROWCODE, 3);)

void f_ArrowClose(
                  datetime closeTime,
                  int action,          //íàïðàâëåíèå
                  double lots,
                  string symb,
                  double openPrice,
                  double closePrice,
                  double profit)
{
      color c;
      string op="";
      if(action==1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_BUY";
      }
      else if(action==-1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_SELL";
      }
      
      string objName = StringConcatenate("#", closeTime, " ", op, " ", lots, " ", symb, " at ", openPrice, " close at ", closePrice);
      ObjectCreate(objName, OBJ_ARROW, 0, closeTime, closePrice);
      ObjectSet(objName, OBJPROP_COLOR, c);
      ObjectSet(objName, OBJPROP_ARROWCODE, 3);
      //ObjectSetText(objName, StringConcatenate("Profit: ", profit));
}