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

 
Techno:
você pode. o habitual especialista/escritor

Talvez já exista algo semelhante, você pode me dizer onde encontrá-lo? Ou conhece alguém que possa escrever um?

 

ajuda, por favor

O pedaço de código abaixo não funciona.

Os valores de MA são calculados e atribuídos à variável MA

corretamente, mas eles não são atribuídos a uma matriz. A matriz é definida como dupla

dinâmico. O procedimento de impressão imprime valores nulos para a matriz.

i=i_max; // ...calcular número dado.

se (flag_NewBar==verdadeiro) // recalcular somente durante a primeira chegada do tick

{

while(i>=0) // laço em barras não lidas

MA=iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Método,g_ext_PRICE,i);

MA=NormalizeDuplo(MA,Dígitos);

mas_MA[i]=MA;

i--; }

 

Eu não entendo porque existe um erro 130? Por favor, ajude.

Aqui está o código:

   double myPrice      = NormalizeDouble(Bid - 10*Pnt*10,Digits);
   double myTakeProfit = NormalizeDouble(myPrice + TakeProfit * Pnt*10,Digits);                                                     //
   if (RAVI0_2_24_D1 > 1 && RAVI0_2_24_D1 < 5 && RAVI0_2_24_D1_1 < RAVI0_2_24_D1 && RAVI0_2_24_D1_2 < RAVI0_2_24_D1_1 && RAVI0_2_24_D1_3 < RAVI0_2_24_D1_2) myTakeProfit = myTakeProfit + 25 * Pnt*10;
   double myStopLoss   = NormalizeDouble(myPrice - StopLoss * Pnt*10,Digits);
   datetime myTimeEnd  = TimeCurrent() + wait*60;
   Alert("OP_BUYLIMIT: Spread=",MarketInfo(Symbol(),MODE_SPREAD)," Stop=",DoubleToStr(MarketInfo(Symbol(), MODE_STOPLEVEL), 2)," lot=",DoubleToStr(lotMM,3)," Pr=",DoubleToStr(myPrice,6)," SL=",DoubleToStr(myStopLoss,6)," TP=",DoubleToStr(myTakeProfit,6));
   ticket=OrderSend(Symbol(),OP_BUYLIMIT,lotMM,myPrice,Slippage,myStopLoss,myTakeProfit,ExpertName, MagicNumber,myTimeEnd,myColor);

Alerta propositalmente inserido para ver o problema, mas não consigo encontrá-lo.

Aqui está a mensagem do Alert:

2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 centavos iK EURUSD,M1: OrderSend error 130

2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 centavos iK EURUSD,M1: Alerta: OP_SELLLIMIT: Spread=1 Stop=10.00 lote=0.010 Pr=1.280300 SL=1.320300 TP=1.240300

 
VNG:

ajuda por favor, por favor, pro

O pedaço de código abaixo não funciona.

Os valores de MA são calculados e atribuídos à variável MA

corretamente, mas eles não são atribuídos a uma matriz. A matriz é definida como dupla

dinâmico. O procedimento de impressão imprime valores nulos da matriz.

i=i_max; // ...calcular número dado.

se (flag_NewBar==verdadeiro) // recalcular somente durante a primeira chegada do tick

{

while(i>=0) // laço em barras não lidas

MA=iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Método,g_ext_PRICE,i);

MA=NormalizeDuplo(MA,Dígitos);

mas_MA[i]=MA;

i--; }

As matrizes IMHO devem ter um certo tamanho, exceto para matrizes em indicadores projetados para "desenho". Acho que deve ser inserido:
ArrayResize(mas_MA,i_max);
 
globad:

Pessoal, por favor, avisem! É possível fazer um programa que dá um sinal sonoro quando o preço passa de 10-11p em 0,1-0,4s?

Sugiro outra forma, 0,1-0,4s é sobre um tick, mudança asc a toda a visão geral do mercado por tick.
Arquivos anexados:
temp_4.mq4  4 kb
 
ikatsko:

Eu não entendo porque existe um erro 130? Por favor, ajude.

Aqui está o código:

Alerta propositalmente inserido para ver o problema, mas não consigo encontrá-lo.

Aqui está a mensagem do Alert:

2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 centavos iK EURUSD,M1: OrderSend error 130

2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 centavos iK EURUSD,M1: Alerta: OP_SELLLIMIT: Spread=1 Stop=10.00 lote=0.010 Pr=1.280300 SL=1.320300 TP=1.240300


Passo a passo, a mudança pára de ultrapassar o preço de abertura (porque o pêndulo está mais baixo do preço) para constantes, descubra quase onde está o erro.

Da ajuda "Se o preço de abertura da ordem pendente estiver incorreto, será gerado o erro 130 (ERR_INVALID_STOPS)".

ticket=OrderSend(Symbol(),OP_BUYLIMIT,1,Close[0]+DoubleToStr(MarketInfo(Symbol(), MODE_STOPLEVEL), 2)*2,15,0,0,ExpertName, MagicNumber,myTimeEnd,myColor);
 
VNG:

ajuda por favor, por favor, pro

O pedaço de código abaixo não funciona.

Os valores de MA são calculados e atribuídos à variável MA

corretamente, mas eles não são atribuídos a uma matriz. A matriz é definida como dupla

dinâmico. O procedimento de impressão imprime valores nulos para a matriz.

i=i_max; // ...calcular um determinado número.

se (flag_NewBar==verdadeiro) // recalcular somente durante a primeira chegada do tick

{

while(i>=0) // laço em barras não lidas

MA=iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Método,g_ext_PRICE,i);

MA=NormalizeDuplo(MA,Dígitos);

mas_MA[i]=MA;

i--; }

Leia-o

https://book.mql4.com/ru/operators/while

https://docs.mql4.com/ru/series/iBarShift

Eu faria isso

if (flag_NewBar) // пересчитываем только во время прихода первого тика
 for(i=i_max;i>=0;i--) // Цикл по непосчитанным барам
    mas_MA[i]=NormalizeDouble(iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,
                                                             iBarShift(g_ext_smb,g_ext_TameFrame,Time[i],false)),Digits);
if (flag_NewBar==true) // пересчитываем только во время прихода первого тика
while(i>=0){ // Цикл по непосчитанным барам
mas_MA[i]=NormalizeDouble(iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,i),Digits);
i--; 
} 
 
me diga, quantos eibars a menos de zero podem ser usados para desenhar objetos? qual é o mínimo?
 
costy_:

Passo a passo, a mudança pára de ultrapassar o preço de abertura (já que o pêndulo é mais alto abaixo do preço) para constantes, identificando praticamente onde está o erro.

Da ajuda " Erro 130 (ERR_INVALID_STOPS) será gerado se o preço pendente do pedido aberto estiver errado".

Sim, UZH :) De fato, o erro é que o preço de abertura do pendente está próximo do preço atual. Arranjou-o, pô-lo a funcionar. OBRIGADO

 
eddy:
me diga, quantos eibarshifts menos de zero podem ser usados para desenhar objetos? qual é o mínimo?

ebarshift é a busca de um bar pelo tempo (nada funcionará).

no terminal a última barra é 0, o tempo está ligado às barras, ou seja, somente desta forma para o futuro através de cordas

ObjectCreate("ff",OBJ_VLINE,0,StrToTime("2010.12.13 20:00"),0); //
Razão: