[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 482

 
Urain писал(а) >>

Scrivere una funzione bool() per controllare se la differenza tra il prezzo e lo stoploop impostato è maggiore dello StopLoss (da marketinfo)

allora vero altrimenti falso.

Allora prima di aprire un ordine dovresti controllare if(function()) e aprire un ordine.


Perché ne ho bisogno se ho impostato lo stop loss del 30% in più rispetto allo stop loss di questa società di intermediazione?

khorosh ha scritto >>.

I punti 2 e 3 sono sbagliati. A destra: Stop Loss e Take Profit per l'acquisto a partire da Ask, Stop Loss e Take Profit per la vendita a partire da Bid.
Il controllo è semplice. Calcolate quale guadagno, se il takeprofit è scattato, otterrete con la vostra variante. Non sarà uguale a TakeProfit in punti. Nella variante proposta, sarà esattamente uguale.


Allora, l'ho modificato come prima e ho ottenuto lo stesso risultato. Ho lasciato solo la normalizzazione del prezzo.
Ma l'errore nel tester rimane e la cosa più interessante è che non ha colpito tutti gli ordini ma alcuni di essi.
Ha l'errore 4107 per 1 ordine su 10 e restituisce gli altri 9 senza errori.

 

Помогите пожфлуйста с индикаторами: 1-й чтобы не убирал разметку на графике. 2-й чтобы лини старших ТФ были внешними на младших и чтобы можно было задать отоброжение(после того как задаешь отоброжение сразу все нормально пока не перещелкнешь ТФ,после этого все линии младших ТФ на старших)нии младших ТФ на старших)

 
Ho dimenticato...
File:
macd.rar  7 kb
 
2
File:
multi.rar  9 kb
 
baltik писал(а) >>


Perché ne ho bisogno se ho impostato lo Stop Loss del 30% più dello Stop Level nella mia società di intermediazione?


Così l'ho rifatto com'era e il risultato è ancora lo stesso, ho solo lasciato la normalizzazione dei prezzi.
Ma l'errore nel tester è rimasto e la cosa più interessante è che ho errori in alcuni ordini e non in tutti.
Per 1 di 10 ha dato errore 4107, e gli altri 9 sono elaborati senza errori.


Mostrami il codice, diamogli un'occhiata.
 
Noterday >>:
Народ, у меня проблема, причем никак не могу допетрить в чем дело, особо не пинайте.
Есть стандартный MACD, хочу в индикаторе отметить все пики столбцов (значками), вот код:
Таким образом я нарисовал все экстремумы в индикаторе. Всё ОК, НО!
Когда функцией Print я вывожу значения всех найденых пиков
то вот что выходит:
Я так понимаю что 2147483647 это нули или пустые значения?

Beh, nessuno può aiutare? :)

 
Noterday писал(а) >>

Beh, nessuno può aiutare? :)


Il problema sembra essere con gli array MAX e MIN.
Li avete collegati ai buffer degli indicatori con SetIndexBuffer() ?

 
Sì, certo :)
 
Noterday писал(а) >>
Sì, certo :)


Usate la funzione IndicatorBuffers()?

 
Ecco il codice completo:
#property indicator_separate_window
#property indicator_buffers 4

#property indicator_color1 MediumPurple
#property indicator_color2 MediumPurple
#property indicator_color3 Green
#property indicator_color4 Red

#property indicator_width3 1
#property indicator_width4 1


extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;

double MMACD1[];
double SMACD1[];
double MAX[];
double MIN[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{

SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);

SetIndexStyle(2,DRAW_ARROW);
SetIndexStyle(3,DRAW_ARROW);
SetIndexArrow(2,119);
SetIndexArrow(3,119);

SetIndexDrawBegin(1,SMACD1);
IndicatorDigits(Digits+2);

SetIndexBuffer(0,MMACD1);
SetIndexBuffer(1,SMACD1);
SetIndexBuffer(2,MAX);
SetIndexBuffer(3,MIN);

IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")");
SetIndexLabel(0,"MACD");
SetIndexLabel(1,"Signal");

return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();

if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;

for(int i=0; i<limit; i++)
MMACD1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

for(i=0; i<limit; i++)
SMACD1[i]=iMAOnArray(MMACD1,Bars,SignalSMA,0,MODE_SMA,i);

for(i=0; i<limit; i++)
{
if(MMACD1[i+1] > MMACD1[i+2] && MMACD1[i+1] > MMACD1[i])
MAX[i+1] = MMACD1[i+1];

if(MMACD1[i+1] < MMACD1[i+2] && MMACD1[i+1] < MMACD1[i])
MIN[i+1] = MMACD1[i+1];
}

for(i=0; i<limit; i++)
{
if (MAX[i+1] != EMPTY_VALUE)
Print(MAX[i+1]);
}

return(0);
}
//+------------------------------------------------------------------+

Motivazione: