[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 350
Por favor, ajude-me a resolver o problema com o limite de turnos em iHigh(Símbolo(),cronograma,turno), que é limitado ao número 1000.
iTime(Symbol(),timeframe,1001) dá 1970.01.01.01 00:00
Ninguém pode ajudar que existe apenas uma opção, lido do arquivo histórico? Se essa é a única opção, alguém tem uma maneira pronta de determinar as informações necessárias no arquivo de histórico.
Não pressione a barra de espaço, mas mantenha pressionado o botão de energia por 5-10 segundos até que o sinal desapareça.
Na KVN, entre os moderadores, você será o capitão de equipe ... Vou repetir a pergunta, talvez alguém responda: o alerta não desliga depois de pressionar a barra de espaço ... A versão terminal é a mais recente 500... Eu nunca tinha visto isto antes.
Pessoal, por favor, me dêem uma dica. Eu já fiz esta pergunta, mas ainda não consegui acertar o código.
Mais uma vez, vou lhes dizer o essencial da idéia. Pelo indicador Awesom, de baixo (abaixo de 0) para cima (acima de 0), o volume da onda (indicador Volumes) é calculado.
O rótulo do texto com a soma do volume da onda, deve ser impresso no gráfico indicador e calculado ao longo de todo o histórico.
Eu recebi isto:
Qual é o erro?
#property indicator_separate_window#property indicator_buffers 2#property indicator_color1 Red#property indicator_color2 SteelBlue#property indicator_width1 2//---- basic fan indicator parametersexternbool Show_AOLine_2=true;
externint SlowEMA3=34;
externint EMA=3;
externbool Show_Volume=true;
externdouble coaf=0.5;
//---- indicator buffersdouble AOBuffer3[];
double ExtMapBuffer1[];
double VLUP, AO_up,AO_dn;
double prhgh_e=0, prhgh_s, prlw_e=0, prlw_s;
datetime tmhgh, tmlw;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- drawing settingsstring name_ind = "Awesome_super_volumes";
IndicatorShortName("Awesome_super_volumes");
//---- AO_fan line 2 (basic)if(Show_AOLine_2 ==true){Show_AOLine_2=DRAW_LINE; }
else
{Show_AOLine_2=DRAW_NONE; }
SetIndexBuffer(0,AOBuffer3);
SetIndexStyle(0,Show_AOLine_2);
SetIndexLabel(0,"basic line");
SetIndexBuffer(1,ExtMapBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexLabel(1,"Volume");
//---- initialization donereturn(0);
}
//+------------------------------------------------------------------+//| Awesome Oscillator |//+------------------------------------------------------------------+int start()
{
int limit;
int counted_bars=IndicatorCounted();
double prev,current;
//---- last counted bar will be recountedif(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=0; i<limit; i++)
{
//---- AO_fan + Volumes
AOBuffer3[i]=iMA(NULL,0,EMA,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,SlowEMA3,0,MODE_SMA,PRICE_MEDIAN,i);
if (Show_Volume==true)
{
double nSum = Volume[i]*Point*coaf;
if (AOBuffer3[i]<=0)ExtMapBuffer1[i] = nSum;
if (AOBuffer3[i]>0)ExtMapBuffer1[i] = -nSum;
double Vol_Arr[];
if (AOBuffer3[i]<=0)Vol_Arr[i]=Volume[i]*Point*coaf;
if (AOBuffer3[i]>0)Vol_Arr[i] = -Volume[i]*Point*coaf;
}
}
//-- Поиск High & Time & Min_AO if (AOBuffer3[i]>0)
{
AO_up = AOBuffer3[i]*0.1+AOBuffer3[i];
prhgh_s = High[i];
if (prhgh_s >= prhgh_e) {prhgh_e = prhgh_s; tmhgh = Time[i];}
//SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmhgh, AO_up, Black);
}
//-- Поиск Low & Time & Max_AOif (AOBuffer3[i]<0)
{
AO_dn = AOBuffer3[i]*0.1+AOBuffer3[i];
prlw_s = Low[i];
if (prlw_s > prlw_e) {prlw_e = prlw_s; tmlw = Time[i];}
//SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmlw, AO_dn, Black);
}
// -- Пересчет баров от High до Lowif(NewBar())
{
int colbr = iBarShift(NULL,0,tmhgh)-iBarShift(NULL,0,tmlw);
int shift=iBarShift(NULL,0,tmhgh);
for (i=0; i<=colbr; i++)
{VLUP += MathAbs(iVolume(NULL,0, shift+i));}
}
Comment("Vol_",VLUP,prlw_e,prhgh_e);
for(i=0; i<limit; i++)
{
SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmlw, AO_dn, Black);
}
//---- donereturn(0);
}
//+------------------------------------------------------------------+void SetText(string name, string Vl, datetime t1, double p1, color c)
{
// if (ObjectFind(name)!=-1) ObjectDelete(name);ObjectCreate(name,OBJ_TEXT,WindowFind("Awesome_super_volumes"),0,0,0,0);
ObjectSetText(name, Vl, 10, "Times New Roman", c);
ObjectSet(name, OBJPROP_TIME1 , t1);
ObjectSet(name, OBJPROP_PRICE1, p1);
ObjectSet(name, OBJPROP_COLOR, c);
}
bool NewBar()
{
staticdatetime lastbar = 0;
datetime curbar = Time[0];
if(lastbar!=curbar)
{
lastbar=curbar;
return (true);
}
else
{
return(false);
}}
1. A função de conversão converte e as mudanças variáveis nesta função não mudarão se não houver nenhum tiquetaque. TimeToStr(TimeLocal(), TIME_MINUTES) - depende do tick.
Você tem alguma idéia de como tirar o tempo do Win32/User32 para não fazer a EA ficar presa?
1. Nenhuma dessas funções depende do tick-dependent. Você só precisa chamar a função para obter o valor de retorno. O indicador e o Expert Advisor o chamam na chegada de um tick, mas nada de mais. O Expert Advisor ou roteiro pode ser loopado. A freqüência das chamadas será a mesma que no indicador ou roteiro.
2. Não há sentido. Você terá que inventar o mesmo TimeLocal().
Não consegui encontrar nada no livro didático sobre o que significa "&" nos parâmetros formais da função. Você pode me dizer o que isso afeta e o que significa?
com o mesmo looping?
Vou tentar
Por favor, ajude-me a resolver o problema com o limite de turnos em iHigh(Símbolo(),cronograma,turno), que é limitado ao número 1000.
iTime(Symbol(),timeframe,1001) dá 1970.01.01.01 00:00Ninguém pode ajudar que existe apenas uma opção, lido do arquivo histórico? Se essa é a única opção, alguém tem uma maneira pronta de determinar as informações necessárias no arquivo de histórico.
Não pressione a barra de espaço, mas mantenha pressionado o botão de energia por 5-10 segundos até que o sinal desapareça.
Na KVN, entre os moderadores, você será o capitão de equipe ... Vou repetir a pergunta, talvez alguém responda: o alerta não desliga depois de pressionar a barra de espaço ... A versão terminal é a mais recente 500... Eu nunca tinha visto isto antes.
Pessoal, por favor, me dêem uma dica. Eu já fiz esta pergunta, mas ainda não consegui acertar o código.
Mais uma vez, vou lhes dizer o essencial da idéia. Pelo indicador Awesom, de baixo (abaixo de 0) para cima (acima de 0), o volume da onda (indicador Volumes) é calculado.
O rótulo do texto com a soma do volume da onda, deve ser impresso no gráfico indicador e calculado ao longo de todo o histórico.
Eu recebi isto:
Qual é o erro?
1. A função de conversão converte e as mudanças variáveis nesta função não mudarão se não houver nenhum tiquetaque. TimeToStr(TimeLocal(), TIME_MINUTES) - depende do tick.
Você tem alguma idéia de como tirar o tempo do Win32/User32 para não fazer a EA ficar presa?
1. Nenhuma dessas funções depende do tick-dependent. Você só precisa chamar a função para obter o valor de retorno. O indicador e o Expert Advisor o chamam na chegada de um tick, mas nada de mais. O Expert Advisor ou roteiro pode ser loopado. A freqüência das chamadas será a mesma que no indicador ou roteiro.
2. Não há sentido. Você terá que inventar o mesmo TimeLocal().
Não consegui encontrar nada no livro didático sobre o que significa "&" nos parâmetros formais da função. Você pode me dizer o que isso afeta e o que significa?
https://docs.mql4.com/ru/basis/variables/formal
A segunda parte da página a partir das palavras "É possível passar parâmetros por referência..." Olhe com atenção ali Exemplo.
Boa tarde.
Você poderia me aconselhar sobre a melhor maneira de consertar a travessia de, digamos, estocásticos:
na primeira e terceira barras comparam os valores do sinal e das linhas principais ou a primeira e segunda ?