[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 686
Per favore ditemi cosa inserire (e dove inserirlo, se possibile) nel codice per far sì che l'EA apra una posizione con il lotto precedente moltiplicato per 2 se il trade precedente era in perdita.
Grazie mille.
Voglio solo farvi una domanda: cosa devo fare se voglio aprire una posizione?
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает флаг убыточности последней позиции. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+bool isLossLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
int i, j=-1, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderProfit()<0) return(True);
}
return(False);
}
Cari programmatori. Per favore, consigliatemi cosa inserire (e dove inserirlo se possibile) nel codice per far sì che l'EA apra una posizione con il lotto precedente moltiplicato per 2, se il trade precedente era in perdita. Vi ringrazio in anticipo. Boris.
Boris, non è affatto difficile, ecco una semplice funzione che implementa il principio della martingala:
//+------------------------------------------------------------------+double getMartinLot(double lot, double x){ //ФУНКЦИЯ УПРАВЛЕНИЯ ОБъЕМОМ ТОРГОВ ПО СИСТЕМЕ МАРТИНГЕЙЛАstaticdouble balance_before, balance_after; //ДЛЯ ХРАНЕНИЯ СОСТОЯНИЯ БАЛАНСА ДО И ПОСЛЕ СДЕЛОКstaticdouble save_Lot;
balance_after = AccountBalance(); //СОХРАНЕНИЕ ТЕКУЩЕГО СОСТОЯНИЯ БАЛАНСАif(balance_after >= balance_before){ //ПРОВЕРКА ИЗМЕНЕНИЯ БАЛАНСА
save_Lot = lot; //ЕСЛИ ОН НЕ ИЗМЕНИЛСЯ ИЛИ СТАЛ БОЛЬШЕ, ТО СБРАСЫВАЕМ ЛОТ ДО БАЗОВОГО
}else{
save_Lot *= x; //ЕСЛИ СТАЛ МЕНЬШЕ ТО УВЕЛИЧИВАЕМ ЛОТ НА Х РАЗ
}
balance_before = balance_after; //СОХРАНЯЕМ СОСТОЯНИЕ БАЛАНСА ПОСЛЕ РАБОТЫreturn(save_Lot);
}
//+------------------------------------------------------------------+
Passa il volume iniziale(doppio lotto), e il passo(doppio x) come parametri. Inserisci il metodo direttamente in OrderSend invece del parametro volume.
itum:
Come risolvere questo problema? Ga
Eseguire la manipolazione della condizione solo una volta all'inizio della barra.
In alternativa, eseguire un flag che viene impostato se viene piazzato un ordine e resettato quando le condizioni sono cambiate in modo significativo.
Уважаемые програмисты.
Per favore ditemi cosa inserire (e dove inserirlo, se possibile) nel codice per far sì che l'EA apra una posizione con il lotto precedente moltiplicato per 2 se il trade precedente era in perdita.
Grazie mille.
Voglio solo farvi una domanda: cosa devo fare se voglio aprire una posizione?
Roger:
Ищите советники с кодовым названием Мартингейл.
Ne ho cercato uno ma non funziona per me.
Ne ho trovato uno che dovrebbe raddoppiare un lotto se un trade precedente era in perdita, ma non vuole funzionare.
Questo probabilmente significa che se vi viene offerto del codice qui, non sarete comunque in grado di inserirlo nel vostro EA da soli, giusto?
No, significa che l'EA non funzionava, e non riesco a trovarne uno funzionante con il pezzo di codice di cui ho bisogno.
Controlla, https://www.mql5.com/ru/forum/104481
No, significa che l'EA non funzionava e non riesco a trovarne uno funzionante con il pezzo di codice di cui ho bisogno.
Nelle variabili globali impostate il valore iniziale del lotto:
Lì assegniamo questo valore alla variabile, che passerà il valore del lotto alla funzione di apertura della posizione:
double Lots_New = Lot;Dopo aver chiuso la posizione, controlliamo il profitto/perdita:La funzione stessa, grazie a Igor Kim...
cyclik33:
Cari programmatori.Per favore, consigliatemi cosa inserire (e dove inserirlo se possibile) nel codice per far sì che l'EA apra una posizione con il lotto precedente moltiplicato per 2, se il trade precedente era in perdita.
Vi ringrazio in anticipo.
Boris.
Boris, non è affatto difficile, ecco una semplice funzione che implementa il principio della martingala:
Passa il volume iniziale(doppio lotto), e il passo(doppio x) come parametri.
Inserisci il metodo direttamente in OrderSend invece del parametro volume.
Esempio di una chiamata di funzione: