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 849

 
gince:

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.

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

Leia-o com mais atenção. Não me lembro em detalhes, mas o código 3 não faz parte de Wingdings.


ps; Aqui está o que está na nota.

Códigos de seta especiais não podem ser usados em indicadores personalizados ao definir o valor da seta para linhascom estilo DRAW_ARROW.

 
É uma EA.
AlexeyVik:

Leia-o com atenção. Não me lembro em detalhes, mas o código 3 não faz parte de Wingdings.


ps; Aqui está o que está na nota

Os códigos de seta especiais não podem ser usados na exibição da seta ao definir o valor da seta para linhasque têm um estilo DRAW_ARROW.

Esta é uma EA e tem uma função.

 
gince:
É o conselheiro.
Isso não importa.
 
AlexeyVik:
Isso não importa.

Quando eu posso fazer isso?

 
gince:
Este é o Conselheiro Especialista.

Há uma segunda função no mesmo conselheiro. Tudo está bem por lá. (ObjectSet(objName, OBJPROP_ARROWCODE, 1);)

void f_ArrowOpen(
                  datetime openTime,
                  int action,
                  double lots,
                  string symb,
                  double openPrice
                  )
{
   color c;
   string op="";
      if(action==1)
      {
         c=Blue;
         op="BUY";
      }
      else if(action==-1)
      {
         c=Red;
         op="SELL";
      }
   // order open arrow name:    #76840865 buy 0.05 EURUSDc at 1.30416

      string objName = StringConcatenate("#", TimeToString(openTime,TIME_DATE|TIME_MINUTES), " ", op, " ", lots, " ", symb, " at ", openPrice);
      ObjectCreate(objName, OBJ_ARROW, 0, openTime, openPrice);
      ObjectSet(objName, OBJPROP_COLOR, c);
      ObjectSet(objName, OBJPROP_ARROWCODE, 1);
      ObjectSetText(objName, "LOT: " + DoubleToStr(lots, 2));
}
//+------------------------------------------------------------------+ 
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));
}
 
Por favor, me diga. O Expert Advisor opera com base em sinais indicadores em cada barra. O que devo fazer para que as condições sejam verificadas em cada tic tac. Aqui estão as condições no indicador :
int limit, i;
int counted_bars=IndicatorCounted(); // Quantas barras já foram contadas
if (counted_bars<0) return(-1); // Verifique possível erro
if (counted_bars>0) counted_bars--; // contar a última barra contada
limit=barras_contadas; // Iniciar a partir da última barra contada
// - 1 - ============================ Fim do bloco ============================

// - 2 -
Indicador de exibição no histórico

for(i = limite; i >= 0; i--)
{
FastMA = iMA(NULL, 0, FastMAPeriod, FastMAShift, FastMAMethod, FastMAPrice, i); SlowMA= iMA(NULL, 0, SlowMAPeriod, SlowMAShift, SlowMAMethod, SlowMAPrice, i);

}
// - 2 - ======================================== Fim do bloco

// - 3 -
Saída de sinal ============================ //if (Última Barra != Tempo[0]) // Uma vez por barra
//{
é isso?
 
gince:

Há uma segunda função no mesmo conselheiro. Tudo está bem por lá. (ObjectSet(objName, OBJPROP_ARROWCODE, 1);)

Você acha que eu vou convencê-lo de que você entendeu mal alguma coisa? É melhor gastar seu tempo em experiências e tentar entender o que você escreveu.
 

Boa tarde a todos.

Você pode me dizer que condição acrescentar antes da OrderSend, para que a ordem não seja executada se a posição aberta anterior estiver em déficit? Para que não haja uma média.

 
Craft:

Boa tarde a todos.

Você pode me dizer que condição acrescentar antes da OrderSend, para que a ordem não seja executada se a posição aberta anterior estiver em déficit? Eu quero evitar a média.

Em geral, a verificação é feita da seguinte forma

OrderSelect(ticket,SELECT_BY_TICKET);

if(OrderProfit()<0) { }


E você pode colocar o que quiser entre parênteses. Eu, por exemplo, uso-o desta forma para fazer o método "Martin" funcionar)

 
Boa noite, poderia me dizer como funciona a EA? Se eu escrever retorno diretamente na função principal Start, a EA termina? Obrigado de antemão!
Razão: