[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 416
Potete dirmi come passare una dimensione da un array bidimensionale a una funzione?
Sono confuso su una cosa.
int testarray[5][2] = {1,2,3,4,5,6,7,8,9,10};// хоть так и можно записать, но в уме нужно держать что это ТАБЛИЦА
void testfunc(int &inarray[][]){ // массив нужно передавать "как есть", но обрабатывать можно выбранную часть string out_str="Result: "+inarray[i,0];
for (int i=1;i<5;i++){// еще нужно учитывать, что счет в массивах начинается с НУЛЯ. "первый - нулевой" out_str += (", "+inarray[i,0]); // здесь бы использовал строковую функцию конкатенации } Print(out_str); } //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- Print("Call first:"); testfunc(testarray); Print("Call second:"); testfunc(testarray); //---- return(0); } //+-----------
Sono ancora io... Non rimproveratemi troppo... Ho circa due settimane di esperienza con gli EA...
Ho creato il mio Expert Advisor basato sui frattali ma continua a mostrare OrderModify error 1 nel mio log durante il test, anche se il mio alce si muove correttamente basato sui frattali. Ho usato la funzione FindNearFractal di Kim. Il codice è il seguente:
for( cnt=0; cnt< total; cnt++){OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);if(OrderType()<=OP_SELL&&// check for opened positionOrderSymbol()==Symbol())// check for symbol{if(OrderType()==OP_BUY)// long position is opened{// check for trailing stopif( TrailFractal){OrderModify(OrderTicket(),OrderOpenPrice(), FindNearFractal(NULL,0,MODE_LOWER),0,0,Green);return(0);}}else// go to short position{// check for trailing stopif( TrailFractal){OrderModify(OrderTicket(),OrderOpenPrice(), FindNearFractal(NULL,0,MODE_UPPER),0,0,Red);return(0);}}}
E sulle aggiunte un'altra domanda. Il codice è il seguente:
for(int i =0; i <OrdersTotal(); i++){// выбор ордераif(OrderSelect( i, SELECT_BY_POS)==false)continue;// not current symbolif(OrderSymbol()!=Symbol())continue;}if(OrderType()==OP_SELL){//при профите >20 pips добавится или докупится ...if(OrderProfit()>20)//////если поставить другое условие открывает много позицийOrderSend(Symbol(),OP_SELL, Lots,Bid,3, sl_sell,0,"Ma+Fr",16384,0,Red);
PeriodForSleep=((Time[0]-Time[1])-(TimeCurrent()-Time[0]))*1000;Sleep( PeriodForSleep);}if(OrderType()==OP_BUY){//при профите >20 pips добавится или докупится ...if(OrderProfit()>20)//////если поставить другое условие открывает много позицийOrderSend(Symbol(),OP_BUY, Lots,Ask,3, sl_buy,0,"Ma+Fr",16384,0,Lime);Sleep( PeriodForSleep);}
Se imposto una rottura frattale (o qualsiasi altro segnale) invece di OrderProfit()>20 nella condizione di aggiunta, apre molte posizioni. Ho provato ad aggiungere Sleep()- non aiuta. Qual è il problema qui?
обычно OrderModify error 1 бывает, когда новые параметры точно соответствуют тем, что в ордере..
Grazie, keekkenen! I parametri sono diversi. La risposta si trova qui. Il consiglio (nel ramo) è di inchiodare questo errore... NormalizeDouble non aiuta nemmeno.
E cosa si può dire del secondo errore (sulle aggiunte)?
Potete dirmi come passare una dimensione da un array bidimensionale a una funzione?
Sono confuso su una cosa.
int testarray[5][2] = {1,2,3,4,5,6,7,8,9,10};// хоть так и можно записать, но в уме нужно держать что это ТАБЛИЦА
void testfunc(int &inarray[][]){ // массив нужно передавать "как есть", но обрабатывать можно выбранную часть
string out_str="Result: "+inarray[i,0];
for (int i=1;i<5;i++){// еще нужно учитывать, что счет в массивах начинается с НУЛЯ. "первый - нулевой"
out_str += (", "+inarray[i,0]); // здесь бы использовал строковую функцию конкатенации
}
Print(out_str);
}
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
Print("Call first:");
testfunc(testarray);
Print("Call second:");
testfunc(testarray);
//----
return(0);
}
//+-----------
Ho due copie della stessa piattaforma di broker. Ognuno ha il proprio conto demo e una cartella condivisa chiamata experts.
Se apro il primo, poi lo chiudo e poi apro il secondo, devo inserire di nuovo la password nel secondo.
Chiudo il secondo e apro il primo - ora ho bisogno della password per il primo. È normale che sia così?
Grazie!
high=iHigh(NULL,60,1); O c'è qualcosa di sbagliato?
Tutto è corretto. Ma se vuoi usare più timeframe o simboli, devi creare una logica corrispondente nel tuo EA.
Все правильно конечно. Но если нужно использовать несколько таймфреймов или инструментов, то нужно делать соотвествующую логику в советнике.
Ok, ci darò un'occhiata. Grazie!
Sono ancora io... Non rimproveratemi troppo... Ho circa due settimane di esperienza con gli EA...
Ho creato il mio Expert Advisor basato sui frattali ma continua a mostrare OrderModify error 1 nel mio log durante il test, anche se il mio alce si muove correttamente basato sui frattali. Ho usato la funzione FindNearFractal di Kim. Il codice è il seguente:
E sulle aggiunte un'altra domanda. Il codice è il seguente: Se imposto una rottura frattale (o qualsiasi altro segnale) invece di OrderProfit()>20 nella condizione di aggiunta, apre molte posizioni. Ho provato ad aggiungere Sleep()- non aiuta. Qual è il problema qui?L'errore 1 di OrderModify di solito accade quando i nuovi parametri corrispondono esattamente a quelli dell'ordine...
обычно OrderModify error 1 бывает, когда новые параметры точно соответствуют тем, что в ордере..
Grazie, keekkenen! I parametri sono diversi. La risposta si trova qui. Il consiglio (nel ramo) è di inchiodare questo errore... NormalizeDouble non aiuta nemmeno.
E cosa si può dire del secondo errore (sulle aggiunte)?
come si fa a scoprire quanto paper profit, cioè il profitto sulle posizioni non chiuse, è attualmente nell'EA?
KimIV ha la funzione GetProfitOpenPosInPoint().
У KimIV есть функция GetProfitOpenPosInPoint().
posso farlo in questo modo e funzionerà?
o sarebbe meglio inserire il codice dello script nell'EA?