Ciao Professionisti, per favore consigliatemi! Come dovrei scrivere nell'EA, in modo che quando una scommessa è fuori, l'EA prende una nuova scommessa nella direzione opposta sulla stessa barra (come un "flip"). Sto testando con il modello "quando si apre una nuova barra". Per l'esempio EA:
Quando si esegue nella finestra del terminale del client, appare un errore nel log:
Nelle impostazioni (menu del terminale client Tools -> Settings -> Mail tab) si impostano i seguenti parametri:
Dove invece di tre punti nei campi SMTP login e From Whom c'è il nome di quella mailbox da cui voglio inviare il messaggio, e nel campo To - il nome della mailbox a cui voglio inviare il messaggio.
Allo stesso tempo ilnumero di porta specificato nelcampoSMTPServer è davvero 25:
Nota: lo screenshot è stato fatto nella sezione Aiuto di Mail.Ru.
Domanda: cos'è questo errore e come liberarsene? Il compilatore non mostra errori e la funzione GetLastError() restituisce 0.
P.S. Per evitare di sporcare il forum, vi ringrazio in anticipo per la vostra risposta.
Buon pomeriggio. Domanda sulla funzione standard SendMail... Percapire come funziona la funzione, ho scritto questo script:
Quando si esegue nella finestra del terminale del client, appare un errore nel log:
Nelle impostazioni (menu del terminale client Tools -> Settings -> Mail tab) si impostano i seguenti parametri:
Dove invece di tre punti nei campi SMTP login e From Whom c'è il nome di quella mailbox da cui voglio inviare il messaggio, e nel campo To - il nome della mailbox a cui voglio inviare il messaggio.
Allo stesso tempo ilnumero di porta specificato nelcampoSMTPServer è davvero 25:
Nota: lo screenshot è stato fatto nella sezione Aiuto di Mail.Ru.
Domanda: cos'è questo errore e come liberarsene? Il compilatore non mostra errori e la funzione GetLastError() restituisce 0.
P.S. Per evitare di sporcare il forum, vi ringrazio in anticipo per la vostra risposta.
Guarda la porta e la crittografia. Forse dovresti impostarlo a 2525.
//-----------------Закрытие по истории в безубыток--------------------//---------------------расчет по истории ордеров номера очередной итерации-----------------------------------------------
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) { // Имеем убыток по закрытым позамdouble money = Lots;
BuyLots = GetBuyLotsSum();
SellLots = GetSellLotsSum();
if(BuyLots > SellLots)money = BuyLots * 10;
if(BuyLots < SellLots)money = SellLots * 10;
if (((AccountEquity() + Sum_Loss + (Sum_Loss / money)) >= AccountBalance()) && (((totalSell > 0) && (totalBuy < 1)) || ((totalSell < 1) && (totalBuy > 0)))) { // Достигли безубытка// Здесь какой-то код, который необходимо выполнить при достижении безубытка
CloseAllBuy();
CloseAllSell();
Sum_Loss = 0.0;
Non ho modo di fare un ciclo aperto quando un affare è stato chiuso in meno e se l'ordine successivo è chiuso sopra lo zero, cioè saldo positivo, ma meno di negativo, aggiungiamo più al negativo e otteniamo un nuovo valore negativo, che è già meno.
if(OrderProfit() >= 0 && Sum_Loss < 0.0)
double lastLoss_two = OrderProfit();
Sum_Loss=Sum_Loss+lastLoss_two; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime();
}
Se è più negativo, secondo il segnale, chiudiamo l'ordine e ricominciamo il ciclo dall'inizio.
La situazione è che quando questo codice chiude l'affare in perdita, allora ricorda il saldo meno, e quando chiude l'affare nel più, e il più è meno del saldo, allora resetta Sum_Loss e ho bisogno che non si sia azzerato, e falciato.
Quindi è così che funziona ora:
controlla un ordine chiuso, se il profitto dell'ordine chiuso è inferiore a zero, allora questo profitto viene aggiunto a Sum_Loss, e così via fino a quando il profitto del trade aperto supera (sarà più di) Sum_Loss, quando raggiunto, il trade viene chiuso, e Sum_Loss viene azzerato e il ciclo inizia di nuovo.
Ho bisogno di:
ordine chiuso in meno, il suo profitto in meno è stato aggiunto a Sum_Loss, poi se l'affare successivo ha chiuso con un profitto positivo, Sum_Loss viene ridotto dell'importo derivato dal profitto, il che significa che il prossimo ordine aperto Sum_Loss è già un importo minore, e così via fino a quando il profitto dell'ordine è maggiore di Sum_Loss, e poi Sum_Loss viene cancellato e inizia un nuovo ciclo.
Buon pomeriggio. Domanda sulla funzione standard SendMail... Percapire come funziona la funzione, ho scritto questo script:
Quando si esegue nella finestra del terminale del client, appare un errore nel log:
Nelle impostazioni (menu del terminale client Tools -> Settings -> Mail tab) si impostano i seguenti parametri:
Dove invece di tre punti nei campi SMTP login e From Whom c'è il nome di quella mailbox da cui voglio inviare il messaggio, e nel campo To - il nome della mailbox a cui voglio inviare il messaggio.
Allo stesso tempo ilnumero di porta specificato nelcampoSMTPServer è davvero 25:
Nota: lo screenshot è stato fatto nella sezione Aiuto di Mail.Ru.
Domanda: cos'è questo errore e come liberarsene? Il compilatore non mostra errori e la funzione GetLastError() restituisce 0.
P.S. Per evitare di sporcare il forum, vi ringrazio in anticipo per la vostra risposta.
Ho messo un ordine pendente al prezzo x. L'ordine viene convertito in un ordine a mercato al prezzo Y. Posso scoprire da qualche parte a quale prezzo è stato piazzato l'ordine pendente (nel giornale ...o ) o dovrò scrivere il mio array
Per favore, consigliatemi la possibile fonte dell'errore. Sto imparando la lingua, quindi sono un po' perplesso.
Il compito nel codice di Expert Advisor è quello di leggere i dati dal file .scv (due valori in una riga, 400 righe) e scriverli in un array.
double signals_array[400][2];
int init()
{
int Handle;
Handle=FileOpen("Signals.csv",FILE_CSV|FILE_READ,";");// Открытие файлаif(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..Alert("Нет файла");//.. извещаем трейдера else// При любой другой ошибке..Alert("Ошибка при открытии файла");//..такое сообщPlaySound("Bzrrr.wav"); // Звуковое сопровождениеreturn; // Выход из start()
}
for (int i = 0; i < 400; i++)
{
for (int j = 0; j < 2; j++)
signals_array[i][j] = StrToDouble(FileReadString(Handle));
}
Alert (signals_array[120][0],"; ",signals_array[0][1]," OK!");
//----return(0);
}
Il problema è questo: se lancio l'EA su un grafico, stampa un avviso con i valori corretti dall'array, ma se provo a testare l'EA, stampa un avviso "No file" nel log. Cioè, sembra che non possa accedere al file (anche se è incredibile) e scrive valori nell'array (il che è confermato da un altro avviso), ma si blocca nel trovare il file, secondo il log. Confuso. Qui sotto c'è uno screenshot.
Il problema è il seguente: se lancio l'Expert Advisor sul grafico, esce un avviso con i valori corretti dell'array, ma se provo a testare l'Expert Advisor, esce l'avviso "No file" nel log. Cioè sembra che non possa accedere al file (anche se è incredibile) e scrive i valori in un array (questo è confermato da un altro avviso) ma si blocca quando trova un file nel registro. Confuso.
Nel tester e sul grafico i file vengono scritti e letti in directory diverse:
Per favore, consigliatemi la possibile fonte dell'errore. Sto imparando la lingua, quindi sono un po' perplesso.
Il compito nel codice di Expert Advisor è quello di leggere i dati dal file .scv (due valori in una riga, 400 righe) e scriverli in un array.
Il problema è questo: se lancio l'EA su un grafico, stampa un avviso con i valori corretti dall'array, ma se provo a testare l'EA, stampa un avviso "No file" nel log. Cioè, sembra che non possa accedere al file (anche se è incredibile) e scrive valori nell'array (il che è confermato da un altro avviso), ma si blocca nel trovare il file, secondo il log. Confuso. Qui sotto c'è uno screenshot.
Se un file è aperto, dovrebbe essere chiuso, anche se si riceve un errore nel lavorarci. Per ora non vedo altri errori.
Buon pomeriggio. Domanda sulla funzione standard SendMail... Percapire come funziona la funzione, ho scritto questo script:
Quando si esegue nella finestra del terminale del client, appare un errore nel log:
Nelle impostazioni (menu del terminale client Tools -> Settings -> Mail tab) si impostano i seguenti parametri:
Dove invece di tre punti nei campi SMTP login e From Whom c'è il nome di quella mailbox da cui voglio inviare il messaggio, e nel campo To - il nome della mailbox a cui voglio inviare il messaggio.
Allo stesso tempo ilnumero di porta specificato nelcampoSMTP Server è davvero 25:
Nota: lo screenshot è stato fatto nella sezione Aiuto di Mail.Ru.
Domanda: cos'è questo errore e come liberarsene? Il compilatore non mostra errori e la funzione GetLastError() restituisce 0.
P.S. Per evitare di sporcare il forum, vi ringrazio in anticipo per la vostra risposta.
Buon pomeriggio. Domanda sulla funzione standard SendMail... Percapire come funziona la funzione, ho scritto questo script:
Quando si esegue nella finestra del terminale del client, appare un errore nel log:
Nelle impostazioni (menu del terminale client Tools -> Settings -> Mail tab) si impostano i seguenti parametri:
Dove invece di tre punti nei campi SMTP login e From Whom c'è il nome di quella mailbox da cui voglio inviare il messaggio, e nel campo To - il nome della mailbox a cui voglio inviare il messaggio.
Allo stesso tempo ilnumero di porta specificato nelcampoSMTP Server è davvero 25:
Nota: lo screenshot è stato fatto nella sezione Aiuto di Mail.Ru.
Domanda: cos'è questo errore e come liberarsene? Il compilatore non mostra errori e la funzione GetLastError() restituisce 0.
P.S. Per evitare di sporcare il forum, vi ringrazio in anticipo per la vostra risposta.
aiuto per favore.
Ecco il codice
Non ho modo di fare un ciclo aperto quando un affare è stato chiuso in meno e se l'ordine successivo è chiuso sopra lo zero, cioè saldo positivo, ma meno di negativo, aggiungiamo più al negativo e otteniamo un nuovo valore negativo, che è già meno.
Se è più negativo, secondo il segnale, chiudiamo l'ordine e ricominciamo il ciclo dall'inizio.
La situazione è che quando questo codice chiude l'affare in perdita, allora ricorda il saldo meno, e quando chiude l'affare nel più, e il più è meno del saldo, allora resetta Sum_Loss e ho bisogno che non si sia azzerato, e falciato.
Quindi è così che funziona ora:
controlla un ordine chiuso, se il profitto dell'ordine chiuso è inferiore a zero, allora questo profitto viene aggiunto a Sum_Loss, e così via fino a quando il profitto del trade aperto supera (sarà più di) Sum_Loss, quando raggiunto, il trade viene chiuso, e Sum_Loss viene azzerato e il ciclo inizia di nuovo.
Ho bisogno di:
ordine chiuso in meno, il suo profitto in meno è stato aggiunto a Sum_Loss, poi se l'affare successivo ha chiuso con un profitto positivo, Sum_Loss viene ridotto dell'importo derivato dal profitto, il che significa che il prossimo ordine aperto Sum_Loss è già un importo minore, e così via fino a quando il profitto dell'ordine è maggiore di Sum_Loss, e poi Sum_Loss viene cancellato e inizia un nuovo ciclo.
Somma_perdita = 0;
1° ordine chiuso: Profitto (-50) < 0
Somma_perdita + profitto (Somma_perdita + (-50))
Somma_perdita = -50;
2° ordine chiuso: Profit (+40) > 0 e Sum_Loss < 0
Somma_perdita + profitto (Somma_perdita + 40)
Somma_Perdita = -10Buon pomeriggio. Domanda sulla funzione standard SendMail... Percapire come funziona la funzione, ho scritto questo script:
Quando si esegue nella finestra del terminale del client, appare un errore nel log:
Nelle impostazioni (menu del terminale client Tools -> Settings -> Mail tab) si impostano i seguenti parametri:
Dove invece di tre punti nei campi SMTP login e From Whom c'è il nome di quella mailbox da cui voglio inviare il messaggio, e nel campo To - il nome della mailbox a cui voglio inviare il messaggio.
Allo stesso tempo ilnumero di porta specificato nelcampoSMTP Server è davvero 25:
Nota: lo screenshot è stato fatto nella sezione Aiuto di Mail.Ru.
Domanda: cos'è questo errore e come liberarsene? Il compilatore non mostra errori e la funzione GetLastError() restituisce 0.
P.S. Per evitare di sporcare il forum, vi ringrazio in anticipo per la vostra risposta.
aiutare
il server smtp.mail.ru:25 funziona davvero
aiutare
Il server smtp.mail.ru:25 funziona davvero.
Il mio login di prova, da chi, a chi, corrisponde.
Forse i firewall sono d'intralcio?
Oh, amico, sono un milione di consigli - resettare il terminale!
Aiutare le persone
Ho messo un ordine pendente al prezzo x. L'ordine viene convertito in un ordine a mercato al prezzo Y. Posso scoprire da qualche parte a quale prezzo è stato piazzato l'ordine pendente (nel giornale ...o ) o dovrò scrivere il mio array
Buona sera!
Per favore, consigliatemi la possibile fonte dell'errore. Sto imparando la lingua, quindi sono un po' perplesso.
Il compito nel codice di Expert Advisor è quello di leggere i dati dal file .scv (due valori in una riga, 400 righe) e scriverli in un array.
Il problema è questo: se lancio l'EA su un grafico, stampa un avviso con i valori corretti dall'array, ma se provo a testare l'EA, stampa un avviso "No file" nel log. Cioè, sembra che non possa accedere al file (anche se è incredibile) e scrive valori nell'array (il che è confermato da un altro avviso), ma si blocca nel trovare il file, secondo il log. Confuso. Qui sotto c'è uno screenshot.
alexeymosc:
Il problema è il seguente: se lancio l'Expert Advisor sul grafico, esce un avviso con i valori corretti dell'array, ma se provo a testare l'Expert Advisor, esce l'avviso "No file" nel log. Cioè sembra che non possa accedere al file (anche se è incredibile) e scrive i valori in un array (questo è confermato da un altro avviso) ma si blocca quando trova un file nel registro. Confuso.
Nel tester e sul grafico i file vengono scritti e letti in directory diverse:
Buona sera!
Per favore, consigliatemi la possibile fonte dell'errore. Sto imparando la lingua, quindi sono un po' perplesso.
Il compito nel codice di Expert Advisor è quello di leggere i dati dal file .scv (due valori in una riga, 400 righe) e scriverli in un array.
Il problema è questo: se lancio l'EA su un grafico, stampa un avviso con i valori corretti dall'array, ma se provo a testare l'EA, stampa un avviso "No file" nel log. Cioè, sembra che non possa accedere al file (anche se è incredibile) e scrive valori nell'array (il che è confermato da un altro avviso), ma si blocca nel trovare il file, secondo il log. Confuso. Qui sotto c'è uno screenshot.
Se un file è aperto, dovrebbe essere chiuso, anche se si riceve un errore nel lavorarci. Per ora non vedo altri errori.
Può essere letto così:
signals_array[i][j] = FileReadDouble(Handle);