Capito. Grazie mille. È una buona opzione, ma non posso testare il sistema con dati storici. Quindi volevo prescriverlo automaticamente in qualche modo. Se avete altri suggerimenti, fatemi sapere.
Per i test sulla storia dovremmo determinare la condizione di chiusura. Profitto/perdita o durata della posizione, per esempio non più di 3 giorni. Questo può essere fatto modificando la scadenza temporale di un ordine/posizione usando OrderModify.
paladin80: Per testarlo sulla storia dobbiamo determinare la condizione di chiusura della posizione. Profit/Loss o durata della posizione, per esempio non più di 3 giorni. Questo può essere fatto modificando la scadenza temporale dell'ordine/posizione usando OrderModify.
Sì, si scopre che avremo una condizione vicina - è la durata della posizione, va bene, non più di 3 giorni. Ho letto di OrderModify ma ancora non lo capisco. Cercherò di farlo la sera. Grazie mille ancora per la tua risposta, molto rapida:)
Scusate, non è nella lingua, ma ho davvero bisogno di sapere se qualcuno lo sa.
In Windows 7 alcuni file si rifiutano di aprirsi. Premo "Apri con...", seleziono un programma e questo NON appare nella lista di selezione dei programmi. Qualcuno sa come rimuovere questa restrizione? Non ce l'aveva su XP. I fottuti sette mi stanno uccidendo :(
Ho il sospetto che il registro abbia bisogno di essere pulito. In particolare, non posso fare doppio clic sul formato FB2. CoolReader eseguito e tutto va bene. si apre. doppio clic per eseguire il formato di file fb2 non vuole.
Esegue un registro di ricerca Utillitoy JV-16 (sempre usato) - beh, ha trovato così tante voci di registro che menzionano fb2, solo orrore - anche paura di uccidere. Cosa fare? Una ricerca su Google non ha prodotto nulla :(
Aiutami a rifare il codice. Il codice non è nuovo, ma qualcosa non funziona per me.
Ecco il codice:
*///-----------------Закрытие по истории в безубыток--------------------//---------------------расчет по истории ордеров номера очередной итерации-----------------------------------------------
Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
Sum_Loss = 0; // суммарный убыток по этим итерациямdatetime
Time_at_History_Current = 0,
Time_at_History_Previos = 0;
if(OrdersHistoryTotal() != 0)
{
for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
{
OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера// для последующего его анализа при подсчете количества итераций
{
double lastLoss = OrderProfit();
Sum_Loss=Sum_Loss+lastLoss; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime();
}
//Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));//Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
{
Time_at_History_Previos = Time_at_History_Current ;
Iteration++;
//Print("Iteration at History в условии сравнения = ", Iteration);
}
else// они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
{
if(OrderProfit() >= 0)
break;
}
}
}
}
}
if (Sum_Loss < 0.0) { // Имеем убыток по закрытым позамif (((AccountEquity() + Sum_Loss + (Sum_Loss * 0.25)) >= AccountBalance()) && (((totalSell > 0) && (totalBuy < 1)) || ((totalSell < 1) && (totalBuy > 0)))) { // Достигли безубытка// Здесь какой-то код, который необходимо выполнить при достижении безубытка
CloseAllBuy();
CloseAllSell();
Sum_Loss = 0.0;
}
}
//-----------------------------------------------------------------
Ho fatto del mio meglio per aprire un ciclo quando si raggiunge un trade negativo e dopo aver raggiunto un trade positivo, se avessi un trade negativo, diminuirei il mio saldo negativo del profitto dell'ultimo ordine chiuso, che è superiore a zero. Cioè, se l'ordine ha chiuso in un meno, cominciamo a lavorare, se la seguente operazione in profitto è più di una perdita, chiudiamo, se sulla seguente operazione hanno chiuso in più, ma questo più non è maggiore di un meno, sugli ordini precedenti, questo più da un saldo negativo, e l'ordine seguente è confrontato con nuovi indicatori che già è meno, come abbiamo prima hanno chiuso in un meno. Stiamo chiudendo con la pesca a strascico, ecco perché abbiamo un saldo positivo.
Scusate, non è in lingua, ma ne ho davvero bisogno, se qualcuno lo sa.
In Windows 7 alcuni file si rifiutano di aprirsi. Premo "Apri con...", seleziono un programma e questo NON appare nella lista di selezione dei programmi. Qualcuno sa come rimuovere questa restrizione? Non ce l'aveva su XP. I fottuti sette mi stanno uccidendo :(
Ho il sospetto che il registro abbia bisogno di essere pulito. In particolare, non posso fare doppio clic sul formato FB2. CoolReader eseguito e tutto va bene. si apre. doppio clic per eseguire il formato di file fb2 non vuole.
Esegue un registro di ricerca Utillitoy JV-16 (sempre usato) - beh, ha trovato così tante voci di registro che menzionano fb2, solo orrore - anche paura di uccidere. Cosa fare? Una ricerca su Google non ha prodotto nulla :(
Avvio - Tutti i programmi - Programmi predefiniti - Impostare le mappature
Scusate, non è nella lingua, ma ho davvero bisogno di sapere se qualcuno lo sa.
In Windows 7 alcuni file si rifiutano di aprirsi. Premo "Apri con...", seleziono un programma e questo NON appare nella lista di selezione dei programmi. Qualcuno sa come rimuovere questa restrizione? Non ce l'aveva su XP. I fottuti sette mi stanno uccidendo :(
Ho il sospetto che il registro abbia bisogno di essere pulito. In particolare, non posso fare doppio clic sul formato FB2. CoolReader eseguito e tutto va bene. si apre. doppio clic per eseguire il formato di file fb2 non vuole.
Esegue un registro di ricerca Utillitoy JV-16 (sempre usato) - beh, ha trovato così tante voci di registro che menzionano fb2, solo orrore - anche paura di uccidere. Cosa fare? Una ricerca su Google non ha prodotto nulla :(
L'essenza della strategia: entrata da stocastico (5,14,3) uscita anche da stocastico ma con un altro periodo (5,3,3). Non capisco come fare un'uscita dallo stocastico e non dal segnale inverso. Ho un problema e non ho idea di come possa essere risolto, cercherò di spiegarlo. Così nel codice, che ho postato, ci sono 2 funzioni //+------------------------------------------------------------------+ //| preparare array di biglietti da chiudere | //+------------------------------------------------------------------+ void PrepareTicketsToClose(int signal, bool Revers, int & ticketsClose[][2], double & lots[],double arrayTickets[][9]) { int size=ArrayRange(arrayTickets,0); //---- if (size==0) return;
int i,type,ticket,closeSize; for (i=0;i<size;i++) { type=arrayTickets[i][1]; // se il tipo di ordine non è un ordine a mercato, allora salta if (type>OP_SELL) continue;
if (Reverses) // inverti il tipo di ordine a mercato { if (type==OP_BUY) type=OP_SELL; else type=OP_BUY; } // qui decidiamo per ogni ordine aperto il suo destino // lasciarlo nel mercato o aggiungerlo all'array alla chiusura if (type==OP_BUY) { // // codice che permette di lasciare il buy
// come esempio if (signal==OP_BUY) continue; }
if (type==OP_SELL) { // //codice che permette di continuare a vendere
//come esempio if (signal==OP_SELL) continue; }
closeSize=ArrayRange(ticketsClose,0); ArrayResize(ticketsClose,closeSize+1); ArrayResize(ticketsClose,closeSize+1); ticketsClose[closeSize][0] = arrayTickets[i][0]; // ticket # ticketsClose[closeSize][1] = arrayTickets[i][1] // tipo di ordine
// qui specifichiamo quanti lotti chiudere lots[closeSize] = arrayTickets[i][2]; // volume da chiudere // è possibile chiudere parzialmente, allora la linea sopra deve essere riscritta } //---- return; }
//+------------------------------------------------------------------+ //| Chiude gli ordini con i ticket specificati | //+------------------------------------------------------------------+ void CloseMarketOrders(int ticketsArray[][2], double lotsArray[]) { //---- int i,size=ArrayRange(ticketsArray,0); if (size==0) return;
int ticket,type; double lots; bool res;
int total=OrdersTotal();
for (i=0;i<size;i++) { ticket = ticketsArray[i][0]; type = ticketsArray[i][1]; lots = lotsArray[i]; RefreshRates(); // solo nel caso in cui l'ambiente di mercato sia aggiornato
// blocco chiusura acquisto if (type==OP_BUY) { res = OrderClose(ticket,lots,Bid,Slippage,Orange); if (!res) { Print("Impossibile chiudere l'ordine di acquisto di #",biglietto,"! Error #",GetLastError()); // ulteriore gestione degli errori, scrivete voi stessi } }
// blocco chiusura vendite if (type==OP_SELL) { res = OrderClose(ticket,lots,Ask,Slippage,Orange); if (!res) { Print("Failed to close sell order #",ticket,"! Error #",GetLastError()); // ulteriore gestione degli errori, scrivi da solo } }
} //---- return; }
La funzione void PrepareTicketsToClose(int signal, bool Revers, int & ticketsClose[][2], double & lots[],double arrayTickets[][9]) ha bisogno di passare una condizione per decidere se l'ordine deve essere chiuso o no... Ho provato a mettere delle condizioni ma non funziona niente.... Qualcuno può guardare e vedere se c'è un errore in queste funzioni o se ho fatto casino....
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Di nuovo buon pomeriggio!
Ho avuto alcune risposte da due brave persone, ma purtroppo nessuna delle opzioni funziona.
Ripeto, sto scrivendo un EA e mi sono confuso su questo momento:
Apro sempre gli ordini con un certo schema e possono chiudersi il giorno dell'apertura o rimanere sul mercato per altri 3 giorni.
Non riesco a capire come registrarmi per poter trovare un ordine attivo da 3 giorni e chiuderlo senza chiudere un ordine aperto dopo.
Lo schema di apertura è lo stesso per tutti gli ordini. Assegno le magie a tutti loro nel modo seguente: Magia_s =Magia_s+1.
Abbiamo bisogno che il sistema trovi e chiuda automaticamente questo ordine perché dobbiamo testare il sistema con dati storici.
Per favore, se qualcuno sa come risolvere questo problema, scriva la risposta. Vi sarò molto grato :)
Capito. Grazie mille. È una buona opzione, ma non posso testare il sistema con dati storici. Quindi volevo prescriverlo automaticamente in qualche modo. Se avete altri suggerimenti, fatemi sapere.
Per testarlo sulla storia dobbiamo determinare la condizione di chiusura della posizione. Profit/Loss o durata della posizione, per esempio non più di 3 giorni. Questo può essere fatto modificando la scadenza temporale dell'ordine/posizione usando OrderModify.
Sì, si scopre che avremo una condizione vicina - è la durata della posizione, va bene, non più di 3 giorni. Ho letto di OrderModify ma ancora non lo capisco. Cercherò di farlo la sera. Grazie mille ancora per la tua risposta, molto rapida:)
Scusate, non è nella lingua, ma ho davvero bisogno di sapere se qualcuno lo sa.
In Windows 7 alcuni file si rifiutano di aprirsi. Premo "Apri con...", seleziono un programma e questo NON appare nella lista di selezione dei programmi. Qualcuno sa come rimuovere questa restrizione? Non ce l'aveva su XP. I fottuti sette mi stanno uccidendo :(
Ho il sospetto che il registro abbia bisogno di essere pulito. In particolare, non posso fare doppio clic sul formato FB2. CoolReader eseguito e tutto va bene. si apre. doppio clic per eseguire il formato di file fb2 non vuole.
Esegue un registro di ricerca Utillitoy JV-16 (sempre usato) - beh, ha trovato così tante voci di registro che menzionano fb2, solo orrore - anche paura di uccidere. Cosa fare? Una ricerca su Google non ha prodotto nulla :(
Saluti!
Aiutami a rifare il codice. Il codice non è nuovo, ma qualcosa non funziona per me.
Ecco il codice:
Ho fatto del mio meglio per aprire un ciclo quando si raggiunge un trade negativo e dopo aver raggiunto un trade positivo, se avessi un trade negativo, diminuirei il mio saldo negativo del profitto dell'ultimo ordine chiuso, che è superiore a zero. Cioè, se l'ordine ha chiuso in un meno, cominciamo a lavorare, se la seguente operazione in profitto è più di una perdita, chiudiamo, se sulla seguente operazione hanno chiuso in più, ma questo più non è maggiore di un meno, sugli ordini precedenti, questo più da un saldo negativo, e l'ordine seguente è confrontato con nuovi indicatori che già è meno, come abbiamo prima hanno chiuso in un meno. Stiamo chiudendo con la pesca a strascico, ecco perché abbiamo un saldo positivo.
Scusate, non è in lingua, ma ne ho davvero bisogno, se qualcuno lo sa.
In Windows 7 alcuni file si rifiutano di aprirsi. Premo "Apri con...", seleziono un programma e questo NON appare nella lista di selezione dei programmi. Qualcuno sa come rimuovere questa restrizione? Non ce l'aveva su XP. I fottuti sette mi stanno uccidendo :(
Ho il sospetto che il registro abbia bisogno di essere pulito. In particolare, non posso fare doppio clic sul formato FB2. CoolReader eseguito e tutto va bene. si apre. doppio clic per eseguire il formato di file fb2 non vuole.
Esegue un registro di ricerca Utillitoy JV-16 (sempre usato) - beh, ha trovato così tante voci di registro che menzionano fb2, solo orrore - anche paura di uccidere. Cosa fare? Una ricerca su Google non ha prodotto nulla :(
Avvio - Tutti i programmi - Programmi predefiniti - Impostare le mappature
Scusate, non è nella lingua, ma ho davvero bisogno di sapere se qualcuno lo sa.
In Windows 7 alcuni file si rifiutano di aprirsi. Premo "Apri con...", seleziono un programma e questo NON appare nella lista di selezione dei programmi. Qualcuno sa come rimuovere questa restrizione? Non ce l'aveva su XP. I fottuti sette mi stanno uccidendo :(
Ho il sospetto che il registro abbia bisogno di essere pulito. In particolare, non posso fare doppio clic sul formato FB2. CoolReader eseguito e tutto va bene. si apre. doppio clic per eseguire il formato di file fb2 non vuole.
Esegue un registro di ricerca Utillitoy JV-16 (sempre usato) - beh, ha trovato così tante voci di registro che menzionano fb2, solo orrore - anche paura di uccidere. Cosa fare? Una ricerca su Google non ha prodotto nulla :(
Ragazzi...aiuto a chi lo sa!!!!
Ho un problema e non ho idea di come possa essere risolto, cercherò di spiegarlo.
Così nel codice, che ho postato, ci sono 2 funzioni
//+------------------------------------------------------------------+
//| preparare array di biglietti da chiudere |
//+------------------------------------------------------------------+
void PrepareTicketsToClose(int signal, bool Revers, int & ticketsClose[][2], double & lots[],double arrayTickets[][9])
{
int size=ArrayRange(arrayTickets,0);
//----
if (size==0) return;
int i,type,ticket,closeSize;
for (i=0;i<size;i++)
{
type=arrayTickets[i][1];
// se il tipo di ordine non è un ordine a mercato, allora salta
if (type>OP_SELL) continue;
if (Reverses) // inverti il tipo di ordine a mercato
{
if (type==OP_BUY) type=OP_SELL; else type=OP_BUY;
}
// qui decidiamo per ogni ordine aperto il suo destino
// lasciarlo nel mercato o aggiungerlo all'array alla chiusura
if (type==OP_BUY)
{
//
// codice che permette di lasciare il buy
// come esempio
if (signal==OP_BUY) continue;
}
if (type==OP_SELL)
{
//
//codice che permette di continuare a vendere
//come esempio
if (signal==OP_SELL) continue;
}
closeSize=ArrayRange(ticketsClose,0);
ArrayResize(ticketsClose,closeSize+1);
ArrayResize(ticketsClose,closeSize+1);
ticketsClose[closeSize][0] = arrayTickets[i][0]; // ticket #
ticketsClose[closeSize][1] = arrayTickets[i][1] // tipo di ordine
// qui specifichiamo quanti lotti chiudere
lots[closeSize] = arrayTickets[i][2]; // volume da chiudere
// è possibile chiudere parzialmente, allora la linea sopra deve essere riscritta
}
//----
return;
}
//+------------------------------------------------------------------+
//| Chiude gli ordini con i ticket specificati |
//+------------------------------------------------------------------+
void CloseMarketOrders(int ticketsArray[][2], double lotsArray[])
{
//----
int i,size=ArrayRange(ticketsArray,0);
if (size==0) return;
int ticket,type;
double lots;
bool res;
int total=OrdersTotal();
for (i=0;i<size;i++)
{
ticket = ticketsArray[i][0];
type = ticketsArray[i][1];
lots = lotsArray[i];
RefreshRates(); // solo nel caso in cui l'ambiente di mercato sia aggiornato
// blocco chiusura acquisto
if (type==OP_BUY)
{
res = OrderClose(ticket,lots,Bid,Slippage,Orange);
if (!res)
{
Print("Impossibile chiudere l'ordine di acquisto di #",biglietto,"! Error #",GetLastError());
// ulteriore gestione degli errori, scrivete voi stessi
}
}
// blocco chiusura vendite
if (type==OP_SELL)
{
res = OrderClose(ticket,lots,Ask,Slippage,Orange);
if (!res)
{
Print("Failed to close sell order #",ticket,"! Error #",GetLastError());
// ulteriore gestione degli errori, scrivi da solo
}
}
}
//----
return;
}
La funzione void PrepareTicketsToClose(int signal, bool Revers, int & ticketsClose[][2], double & lots[],double arrayTickets[][9]) ha bisogno di passare una condizione per decidere se l'ordine deve essere chiuso o no...
Ho provato a mettere delle condizioni ma non funziona niente....
Qualcuno può guardare e vedere se c'è un errore in queste funzioni o se ho fatto casino....
Avvio - Tutti i programmi - Programmi predefiniti - Impostare le mappature
Questa operazione porta ad una finestra di selezione del programma. Specifica un programma e non vi compare.