[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 325
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Você pode me dizer como prescrever quando a diferença de dois EMAs (cinco dias/mínimo e máximo) aumenta, para vender longo no EMA máximo e comprar curto no EMA mínimo?
Eu uso"Rastvor" no cabeçalho variável global como a diferença de dois EMAs .
Como escrever este código nos critérios comerciais?
Isto é, oVol_Arr[] deve ser inicializado como uma matriz global, como eu o entendo.
A questão é, naturalmente, uma questão nula, MAS.
1. Por que os volumes são exibidos corretamente no indicador?
2. Ao fazer o cálculo, eu acessoAOBuffer3[] e nãoVol_Arr[].
Obrigado!
Ao declarar um array (não um buffer), você deve especificar explicitamente seu tamanho.... pelo menos.
Isto é, oVol_Arr[] deve ser inicializado como uma matriz global, como eu o entendo.
A questão é, naturalmente, uma questão nula, MAS.
1. Por que os volumes são exibidos corretamente no indicador?
2. Ao fazer o cálculo, eu acessoAOBuffer3[] e nãoVol_Arr[].
Obrigado!
Você não aloca memória para esta matriz(Vol_Arr[]) de forma estática ou dinâmica.
2. Tanto quanto vejo pelo código, a diferença de MA e não os volumes é calculada na matrizAOBuffer3[].
Os volumes são contados emExtMapBuffer1.
Vol_Arr[] pode ser inicializado como um global ou com um modificador estático - você pode escolher o seu próprio, mas a memória deve ser alocada em qualquer caso ou você pode ligá-la ao buffer indicador, bem como aos dois arrays anteriores - claro, há muitas variantes.
1) Ambas as matrizes que você utiliza estão conectadas com buffers indicadores, ou seja, a memória é alocada para elas (embora implicitamente).
......
Vladislav, eu revisei o código novamente. Uma parte do código comVol_Arr[]foi deixada da versão antiga do indicador, eu o apaguei.
Acho que o erro ainda está nesta parte do código, mas não entendo onde! Eu comentei esta parte do código em mais detalhes.
Vladislav, eu revisei o código novamente. Uma parte do código comVol_Arr[]foi deixada da versão antiga do indicador, eu o apaguei.
Penso que o erro ainda está nesta parte do código, mas não entendo onde! Eu comentei esta parte do código com mais detalhes.
Aqui está:
#property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Red #property indicator_color2 SteelBlue #property indicator_width1 2 //---- basic fan indicator parameters extern bool Show_AOLine_2=true; extern int SlowEMA3=34; extern int EMA=2; extern bool Show_Volume=true; extern double coaf=1.5; extern bool Show_Vol_line=true; //---- indicator buffers double AOBuffer3[]; double ExtMapBuffer1[]; double VLUP; double prhgh_e=0, prhgh_s, prlw_e=0, prlw_s; datetime tmhgh, tmlw; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- drawing settings string 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 done return(0); } //+------------------------------------------------------------------+ //| Awesome Oscillator | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars=IndicatorCounted(); double prev,current; //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- AO_fan line 2 (basic) buffer for(int i=0; i<limit; i++) { //---- AO_fan basic line + 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; } } //-- Поиск High & Time if (AOBuffer3[i]>=0) //Если Awesome больше нуля { prhgh_s = High[i]; // ----- if (prhgh_s >= prhgh_e) {prhgh_e = prhgh_s; tmhgh = Time[i];} //--- Ищу самый высокий бар и определяю время этого бара // -- пока значение tmhgh = 0 } //-- Поиск Low & Time if (AOBuffer3[i]<=0) //Если Awesome меньше нуля { prlw_s = Low[i]; // ----- if (prlw_s > prlw_e) {prlw_e = prlw_s; tmlw = Time[i];} // --- Ищу самый низкий бар и определяю время этого бара // -- пока значение tmlw = 0 } // -- Пересчет баров от High до Low int colbr = iBarShift(NULL,0,tmhgh)-iBarShift(NULL,0,tmlw); //-- Здесь считаю общее количество баров от наименьшего до наибольшего значения // -- пока значение colbr = 0 int shift=iBarShift(NULL,0,tmlw); // -- Это точка отсчета for (i=0; i<=colbr; i++) {VLUP += MathAbs(iVolume(NULL,0, shift+i));} //-- Значению VLUP суммируем все объемы начиная от самого низкого бара до самого высокого бара // -- Значение VLUP = 47 SetText("Awesome_super_volumes"+Time[i], DoubleToStr(VLUP,0), tmhgh, 0.0010, Black); SetText2("Волна1",DoubleToStr(VLUP,0),980,10,Gray,10); SetText2("Волна2",TimeToStr(tmlw,0),980,25,Gray,10); SetText2("Волна3",TimeToStr(tmhgh,0),980,40,Gray,10); SetText2("Волна4",DoubleToStr(colbr,0),980,55,Gray,10); //---- done return(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); } void SetText2(string name, string text, int xdist, int ydist, color c, int size) { ObjectCreate(name,OBJ_LABEL,0,0,0,0,0); ObjectSet(name, OBJPROP_XDISTANCE, xdist); ObjectSet(name, OBJPROP_YDISTANCE, ydist); ObjectSetText(name,text,7,"Arial Black",c); }Mais uma vez obrigado!
Aqui está:
Em um relance:
O fragmento destacado está fora do laço e usa o contador de laço i - algo está errado ou com a lógica ou com a implementação
Por que você precisa dos números como arquivos CSV?
Necessário para testar e depurar os algoritmos de reconhecimento.
Escreva-os você mesmo para compreendê-los, em vez de levar os de outra pessoa.
Escrever o quê exatamente? Você quer dizer, marcar você mesmo as formas na carta e exportar os pedaços apropriados da história? Esta solução é a primeira na fila até agora, mas ainda espero que alguém já o tenha feito. Afinal de contas, é apenas uma tarefa.
Muita coisa não significa melhor!
Deixe-me discordar. Quanto maior o conjunto de testes, mais estatisticamente confiável será o resultado do programa.
p.s. A pergunta ainda é válida.(Ver pergunta neste post )
Olá a todos!!!
Você poderia me dizer que código é necessário para fazer um longo fechamento no máximo do MA atual?
Abaixo estão os critérios reais de negociação e destacado em vermelho o que não está claro.
Também não está claro como dizer ao programa para sair de uma posição,
depois de aumentar a diferença entre MA1 e MA2?
//
5 --
// Critérios comerciais
MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_HIGH,1); // MA_1 MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_LOW,1); // MA_2
if ( iHigh (Symbol(),Period(),0) >= MA_1_t) //
{
Opn_S=true;
}
if ( iLow (Symbol(),Period(),0) <= MA_2_t) //
{
Opn_B=true; // Open Buy criterion
}
if(que código é necessário para fazer um longo fechamento no iMA máximo de hoje?)
{
Cls_B=true;
}
// 6 --
Apenas uma olhada rápida:
O fragmento destacado está fora do laço e usa o contador i loop - algo está errado ou com a lógica ou com a implementação
Obrigado Vladislav! Algo começou a funcionar. Mas por alguma razão só por isto! :(
Outra pergunta por que as etiquetas de texto não são exibidas na janela indicadora?