[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 197
Compagni, aiuto per favore... Ho scritto un codice semplice, ma quando si compila dice che le parentesi sono sbilanciate, ma le ho già contate 300 volte - tutto è a posto
L'idea è semplice - se il MACD è stato sopra (o sotto) lo 0 per 7 minuti o meno, la posizione si apre
E per quanto riguarda le parentesi, ho l'abitudine di specificare a cosa si riferisce la chiusura
}//per
}// (segnale...
"a gusto e colore..." - ma devo ammettere che questo approccio sovraccarica il codice di informazioni inutili + richiede tempo per scrivere linee di codice extra + non risolve il problema della nidificazione profonda (numerazione dei livelli?)
Strutturare meglio il codice - come nell'esempio precedente
Buon pomeriggio, potreste dirmi come scrivere una condizione in modo che dopo aver aperto un ordine, il secondo non possa aprirsi sulla stessa candela. Scrivo quanto segue:
// conta il numero di ordini aperti per un titolo int CountOrder=0; for (int j=0; j<OrdersTotal(); j++) if (OrderSelect(j,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol()==Symbol()) CountOrder++;
// numero di barra dell'ultima posizione chiusa o -1, se non è stata ancora aperta int BarLast=BarLastClosePose();
и
// numero di barra dell'ultima posizione chiusa int BarLastClosePose() { datetime t; int i;
for (i=0; i<OrdersHistoryTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { //se (OrderMagicNumber()!=Magic) continua; se (OrderSymbol()!=Symbol()) continua; se (OrderType()>1) continua; se (t<OrderCloseTime()) t=OrderCloseTime(); } }
Vinin, verificato, tutto va bene in questa funzione... return(0) si riferisce alla funzione iniziale, e se non si contano le parentesi attaccate a return'y, si ottengono 14 parentesi... 7 a testa
Vinin, verificato, tutto va bene in questa funzione... return(0) si riferisce alla funzione iniziale, e se non si contano le parentesi che sono attaccate a return'y, si ottengono 14 parentesi... 7 in ogni direzione.
Copiare ogni funzione in un file separato e verificare la compilazione aiuta.
Se le parentesi sono corrette, allora indica dove finisce l'inizio e inizia il segnale MACD.
int start()
{
//---- int total,ticket; //объявил тотал и тикет int signal = signal_MACD(); //сигнал МАКД передает значение в сигнал
AnalyzeSignal(signal); //аналайз сигнал анализирует сигналint MACD[8] = {0,1,2,3,4,5,6,7}; //создал одномерный массив МАКД
MACD[0] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,7);
///Бла-бла-бла
MACD[7] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,0);
total = OrdersTotal(); //тотал считает ордера///Тут большая жирная закрывающая скобка, если конечно следующая строчка это функцияint signal_MACD()
Copiare ogni funzione in un file separato e verificare la compilazione aiuta.
Se le parentesi sono corrette, indica dove finisce l'inizio e inizia il segnale MACD.
hmm... int signal_MACD() è effettivamente una funzione... ma perché deve essere dietro la funzione start? onestamente non capisco perché alcune funzioni sono scritte fuori dallo start e altre dentro... qual è la differenza?
Compagni, aiuto per favore... Ho scritto un codice semplice, ma quando si compila dice che le parentesi sono sbilanciate, ma le ho già contate 300 volte - tutto è a posto
L'idea è semplice - se il MACD è stato sopra (o sotto) lo 0 per 7 minuti o meno, la posizione si apre
Controlla questa funzione
p.s. come fai a disegnare una sceneggiatura così bene come fai tu?
C'è un pulsante SRC quando scrivi la tua risposta.
Per quanto riguarda le parentesi, ho l'abitudine di specificare a cosa si riferisce la parentesi chiusa
}//per
}// (segnale...
E per quanto riguarda le parentesi, ho l'abitudine di specificare a cosa si riferisce la chiusura
}//per
}// (segnale...
"a gusto e colore..." - ma devo ammettere che questo approccio sovraccarica il codice di informazioni inutili + richiede tempo per scrivere linee di codice extra + non risolve il problema della nidificazione profonda (numerazione dei livelli?)
Strutturare meglio il codice - come nell'esempio precedente
Buon pomeriggio, potreste dirmi come scrivere una condizione in modo che dopo aver aperto un ordine, il secondo non possa aprirsi sulla stessa candela. Scrivo quanto segue:
se (... && CountOrder<2 && (BarLast>1 || BarLast==-1))
{
OrderSend(Symbol(),OP_BUY,MinLot,Ask,0,VStopLossLong,0, "BUY: ",MagicL,0,Green);
}
dove
// conta il numero di ordini aperti per un titolo
int CountOrder=0;
for (int j=0; j<OrdersTotal(); j++)
if (OrderSelect(j,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol()==Symbol()) CountOrder++;
// numero di barra dell'ultima posizione chiusa o -1, se non è stata ancora aperta
int BarLast=BarLastClosePose();
и
// numero di barra dell'ultima posizione chiusa
int BarLastClosePose()
{
datetime t;
int i;
for (i=0; i<OrdersHistoryTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
//se (OrderMagicNumber()!=Magic) continua;
se (OrderSymbol()!=Symbol()) continua;
se (OrderType()>1) continua;
se (t<OrderCloseTime()) t=OrderCloseTime();
}
}
return (iBarShift(Symbol(),Period(),t,true));
}
Controlla questa funzione
Vinin, verificato, tutto va bene in questa funzione... return(0) si riferisce alla funzione iniziale, e se non si contano le parentesi attaccate a return'y, si ottengono 14 parentesi... 7 a testa
Vinin, verificato, tutto va bene in questa funzione... return(0) si riferisce alla funzione iniziale, e se non si contano le parentesi che sono attaccate a return'y, si ottengono 14 parentesi... 7 in ogni direzione.
Copiare ogni funzione in un file separato e verificare la compilazione aiuta.
Se le parentesi sono corrette, allora indica dove finisce l'inizio e inizia il segnale MACD.
Copiare ogni funzione in un file separato e verificare la compilazione aiuta.
Se le parentesi sono corrette, indica dove finisce l'inizio e inizia il segnale MACD.
hmm... int signal_MACD() è effettivamente una funzione... ma perché deve essere dietro la funzione start? onestamente non capisco perché alcune funzioni sono scritte fuori dallo start e altre dentro... qual è la differenza?