[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 240
Se si lavora a prezzi di apertura, è sufficiente controllare all'apertura di un nuovo bar.
int start(){if(! NevBar())return(0);//.......return(0);}bool NevBar(){staticint prevtime=0;if( prevtime==Time[0])return(false);
prevtime=Time[0];return(true);}
E' più o meno così. E se l'apertura è possibile ad altri prezzi. Dovremmo usare altri meccanismi.
Se solo una posizione può essere aperta da un simbolo e un timeframe, dobbiamo controllare il numero di posizioni aperte.
int CountOrder[6];// Функция формирует массив с количеством открытых позиций по каждому виду ордеров.//===============================================================================int Order_Count_Calculate(string _Symbol,int _Magic,int _OP=-1){ArrayInitialize( Order_Count,0);for(int i =OrdersTotal()-1; i >=0; i--){if(!OrderSelect( i, SELECT_BY_POS, MODE_TRADES))continue;if(OrderSymbol()!= _Symbol)continue;if(OrderMagicNumber()!= _Magic)continue;
Order_Count[OrderType()]++;}if(_OP>=0)return( Order_Count[_OP]);return(0);}
Ora, controllando i valori degli elementi necessari dell'array, sappiamo quante posizioni di questo tipo sono aperte.
Ho questo nel codice, ma non capisco questo array, come farà a rilevare se c'era un ordine su questa barra e si è chiuso, e aspetteremo una nuova barra?
Come faccio a spiegarmi? Potrei essermi espresso male o aver frainteso la funzione....
1) Se apriamo un ordine sulla barra zero ed è già chiuso, allora non apriamo un altro ordine su questa barra anche se c'è un segnale per aprirlo perché abbiamo già avuto un trade su questa barra ed è già chiuso.
Su ogni barra è permesso aprire solo un affare, se c'era un affare su questa barra, non apriamo l'ordine, come fare?
Aiuta le persone.....))) Sto già avendo un crollo \\\\\\\\>>>>
Ho questo nel codice, non capisco come farà a rilevare che c'era un ordine su questa barra e si è chiuso e dovremo aspettare una nuova barra?
Come faccio a spiegarmi? Potrei essermi espresso male o aver frainteso la funzione....
1) Se apriamo un ordine sulla barra zero ed è già chiuso, allora non apriamo un altro ordine su questa barra anche se c'è un segnale per aprirlo perché abbiamo già avuto un trade su questa barra ed è già chiuso; aspettiamo solo la prossima barra.
Su ogni barra è permesso aprire solo un affare, se c'era un affare su questa barra, non apriamo l'ordine, come fare?
Aiuta le persone.....))) Sto già avendo un crollo \\\\\\\\>>>>
Guardate il thread di Igor KIM 'Funzioni utili da KimIV'. Una delle funzioni risponderà alla tua domanda
Qui sto cercando di scrivere un consigliere... Ho appena iniziato a imparare... L'errore 4062 appare nel tester...(ERR_STRING_PARAMETER_EXPECTED - 4062 - è previsto un parametro di tipo stringa)
Non riesco a capire dove ripararlo. Qualcuno del posto può guardare il codice:)
externdouble Lots =0.9;//лотexterndouble StopLoss =70;externdouble DecreaseFactor =80;externdouble MaximumRisk =0.014;externdouble MaximumLots =100;//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+double GetSizeLot()//оптимизация лотов{double Lot = Lots;int cycle;int prof =0;int orders = HistoryTotal();// history orders totalint losses =0;// number of losses orders without a breakint vinn =0;int i = orders;//---- select lot size
Lot =NormalizeDouble(AccountFreeMargin()* MaximumRisk /100,1);//----if(AccountFreeMargin()<=14)
DecreaseFactor =14;//----if(AccountFreeMargin()>10000)
DecreaseFactor =60;//----if( DecreaseFactor >0&& orders > DecreaseFactor){//----for( cycle =1; cycle < DecreaseFactor; cycle++){
i--;//----if(OrderSelect( i, SELECT_BY_TICKET, MODE_HISTORY)==false){Print("Error in history!");break;}//----if(OrderCloseTime()>0){
prof = prof +OrderProfit();if(OrderProfit()<=0)
losses++;else
vinn++;}}if( prof <=0&& losses > vinn)
Lot =0.1;if( prof <=0&& vinn > losses)
Lot = Lot -(0.1* losses);if( prof >0&& losses > vinn){
Lot = Lot +(0.1*NormalizeDouble( vinn /4,0.1));}if( prof >0&& losses <= vinn ){
Lot = Lot +(0.1*NormalizeDouble( vinn /2,0.1));}}if(AccountFreeMargin()<300|| Lot <0.1)
Lot =0.1;if( Lot*1275>=AccountFreeMargin())
Lot =NormalizeDouble(AccountFreeMargin()* MaximumRisk /100,1);if( MaximumLots !=0&& Lot > MaximumLots)
Lot = MaximumLots;if( DecreaseFactor > orders)
Lot = Lots;return( Lot);}//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+ int start(){double glav1, sig1, glav2, sig2;int cnt, ticket, total;
glav1 =iCustom(NULL,0,"i_Trend",0,1);
sig1 =iCustom(NULL,0,"i_Trend",1,1);
glav2 =iCustom(NULL,0,"i_Trend",0,2);
sig2 =iCustom(NULL,0,"i_Trend",1,2);
total =OrdersTotal();// проверяем есть ли открытые позицииif( total <1){if(AccountFreeMargin()<(500* Lots))// проверяем денежки на счету{Print("Денег почти нет, осталось всего: ",AccountFreeMargin());return(0);}}// проверяем открытие позиции на покупкуif(( glav2< sig2)&&( glav1> sig1)){OrderSend(Symbol(),OP_BUY, GetSizeLot(),Ask,3,Ask- StopLoss*Point,"AlanMod expert",16384,0,Green);return(0);}// проверяем возможность открытия на продажуif(( glav2> sig2)&&( glav1< sig1)){OrderSend(Symbol(),OP_SELL, GetSizeLot(),Bid,3,Bid+ StopLoss*Point,"AlanMod expert",16384,0,Red);return(0);}for( cnt =0; cnt < total; cnt++){OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);if(OrderType()<=OP_SELL&&// проверка открытой позиции OrderSymbol()==Symbol())// проверка с нашего ли она графика{if(OrderType()==OP_BUY)// если открыта позиция на покупку{if( glav1< sig1)// проверяем закрывать или нет?{OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);// закрылиreturn(0);// сваливаем}}else// если эта позиция на продажу{if( glav1> sig1)//проверяем закрывать иль нет?{OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);// закрылиreturn(0);// сваливаем}}}}}
Qui sto cercando di scrivere un consigliere... Ho appena iniziato a imparare... L'errore 4062 appare nel tester...(ERR_STRING_PARAMETER_EXPECTED - 4062 - è previsto un parametro di tipo stringa)
Non riesco a capire dove ripararlo. Che qualcuno di voi ragazzi locali possa dare un'occhiata al codice:)
1) double NormalizeDouble( double value, int digits), e si ha (vinn/2, 0.1)
Non ho trovato la pagina.
Non l'ho trovato nemmeno io. Non importa.
Se si lavora a prezzi di apertura, è sufficiente controllare all'apertura di un nuovo bar.
E' più o meno così. E se l'apertura è possibile ad altri prezzi. Dovremmo usare altri meccanismi.
Se solo una posizione può essere aperta da un simbolo e un timeframe, dobbiamo controllare il numero di posizioni aperte.
Ora, controllando i valori degli elementi necessari dell'array, sappiamo quante posizioni di questo tipo sono aperte.
Per esempio (esempio di impostazione di un buy stop) :
(non è affatto necessario che il prezzo impostato sia nel flusso delle quotazioni per impostare un ordine pendente.
Si può andare con il prezzo corrente o con qualsiasi prezzo, purché si rispetti il livello di stop dal PREZZO CORRENTE AL PREZZO STOP)
( "EURUSD - Tendenze, previsioni e conseguenze" )
Invece di
doppio priceBUY=..... ....
inserisci la tua formula
EH... grazie mille soprattutto per il codice allegato! Proprio quello che il medico ha ordinato! ))))
Non l'ho trovato nemmeno io. Non importa.
Se si lavora a prezzi di apertura, è sufficiente controllare all'apertura di un nuovo bar.
E' più o meno così. E se l'apertura è possibile ad altri prezzi. Dovremmo usare altri meccanismi.
Se solo una posizione può essere aperta da un simbolo e un timeframe, dobbiamo controllare il numero di posizioni aperte.
Ora, controllando i valori degli elementi necessari dell'array, sappiamo quante posizioni di questo tipo sono aperte.
Ho questo nel codice, ma non capisco questo array, come farà a rilevare se c'era un ordine su questa barra e si è chiuso, e aspetteremo una nuova barra?
Come faccio a spiegarmi? Potrei essermi espresso male o aver frainteso la funzione....
1) Se apriamo un ordine sulla barra zero ed è già chiuso, allora non apriamo un altro ordine su questa barra anche se c'è un segnale per aprirlo perché abbiamo già avuto un trade su questa barra ed è già chiuso.
Su ogni barra è permesso aprire solo un affare, se c'era un affare su questa barra, non apriamo l'ordine, come fare?
Aiuta le persone.....))) Sto già avendo un crollo \\\\\\\\>>>>
Ho questo nel codice, non capisco come farà a rilevare che c'era un ordine su questa barra e si è chiuso e dovremo aspettare una nuova barra?
Come faccio a spiegarmi? Potrei essermi espresso male o aver frainteso la funzione....
1) Se apriamo un ordine sulla barra zero ed è già chiuso, allora non apriamo un altro ordine su questa barra anche se c'è un segnale per aprirlo perché abbiamo già avuto un trade su questa barra ed è già chiuso; aspettiamo solo la prossima barra.
Su ogni barra è permesso aprire solo un affare, se c'era un affare su questa barra, non apriamo l'ordine, come fare?
Aiuta le persone.....))) Sto già avendo un crollo \\\\\\\\>>>>
Guardate il thread di Igor KIM 'Funzioni utili da KimIV'. Una delle funzioni risponderà alla tua domanda
Qui sto cercando di scrivere un consigliere... Ho appena iniziato a imparare... L'errore 4062 appare nel tester...(ERR_STRING_PARAMETER_EXPECTED - 4062 - è previsto un parametro di tipo stringa)
Non riesco a capire dove ripararlo. Qualcuno del posto può guardare il codice:)
Qui sto cercando di scrivere un consigliere... Ho appena iniziato a imparare... L'errore 4062 appare nel tester...(ERR_STRING_PARAMETER_EXPECTED - 4062 - è previsto un parametro di tipo stringa)
Non riesco a capire dove ripararlo. Che qualcuno di voi ragazzi locali possa dare un'occhiata al codice:)
1) double NormalizeDouble( double value, int digits), e si ha (vinn/2, 0.1)
2) OrderSend(Symbol(), OP_BUY, GetSizeLot(), Ask, 3, Ask - StopLoss*Point,NO TAKE_profit, "AlanMod expert", 16384, 0, Green);
come nomino i buffer negli indicatori personalizzati?