cambia la chiusura in apertura. Se inizia a contare per aperto, allora scavate in questa direzione come cambiare questo valore. Ora non posso eseguire il terminale beta per guardare nel suo editor.
Cambiate il valore qui prima:
//--- counting from 0 to rates_totalArraySetAsSeries(ExtLineBuffer,false);
ArraySetAsSeries(close,false);
//--- first calculation or number of bars was changed
Non ha senso cambiare Close in Open, ci saranno pochi cambiamenti. È più facile non preoccuparsi di queste sciocchezze, ma prendere i dati dalla barra formata.
Ho scritto un EA, ma non funziona in tutto)))) o non funziona correttamente. Ho frugato in giro, sistemando molte cose, ma tuttavia, l'EA non funziona.
Ecco un frammento del calcolo delle decisioni di trading basate sull'indicatore RSI:
int Ticket1_RSI=-1, Ticket2_RSI=-1; // Номера открытых ордеровexterndouble Lot=0.01; // Объем лотаint RSI() // Функция RSI
{
double T, P;
double RSI_0, RSI_1, RSI_2; // Значения индикатора RSI//------------------Значения индикатора---------------------------------------
RSI_0=iRSI(Symbol(), 0, 14, PRICE_CLOSE, 0); // Получаем данные от RSI
RSI_1=iRSI(Symbol(), 0, 14, PRICE_CLOSE, 1); // Получаем данные от RSI
RSI_2=iRSI(Symbol(), 0, 14, PRICE_CLOSE, 2); // Получаем данные от RSI //------------------Условие на продажу--------------------------------- if (RSI_1 > RSI_0 > 70 && RSI_1 > RSI_2) // Если индикатор превышает значение 70 и виден поворот вниз
{
if (Ticket2_RSI > 0) // Если имеется ордер на покупку
OrderClose(Ticket2_RSI, OrderLots(), Bid, 0, 0); // Закрытие ордера на покупкуif (Ticket1_RSI <= 0) // Если ордера на продажу нет
{
Ticket1_RSI=OrderSend(Symbol(), OP_SELL, Lot, Bid, 2, 0, 0); // Открытие ордера на продажуif (OrderSelect(Ticket1_RSI, SELECT_BY_TICKET)==true)
{
T=OrderOpenTime();
P=OrderOpenPrice();
ObjectCreate("Arrow", 22, 0, T, P); // Создание индикатора ордера
ObjectSet("Arrow", OBJPROP_COLOR, IndianRed); // Изменение цвета в мутно-красноватый
ObjectSet("Arrow", OBJPROP_ARROWCODE, 242); // Направление стрелки внизObjectCreate("Text", 21, 0, T, P); // Создание текстового объекта
ObjectSetText("Text", "Open sell-order by RSI", 6, "Times New Roman", Navy); // Текст, шрифт, стиль, цвет
}
}
}
//-------------------Условие на покупку-------------------------------- if (RSI_1 < RSI_0 < 30 && RSI_1 < RSI_2) // Если индикатор ниже значения 30 и виден поворот вверх
{
if (Ticket1_RSI > 0) // Если имеется ордер на продажу
OrderClose(Ticket1_RSI, OrderLots(), Ask, 0, 0); // Закрытие ордера на продажуif (Ticket2_RSI <= 0) // Если ордера на продажу нет
{
Ticket2_RSI=OrderSend(Symbol(), OP_BUY, Lot, Ask, 2, 0, 0); // Открытие ордера на покупкуif (OrderSelect(Ticket2_RSI, SELECT_BY_TICKET)==true)
{
T=OrderOpenTime();
P=OrderOpenPrice();
ObjectCreate("Arrow", 22, 0, T, P); // Создание индикатора ордера
ObjectSet("Arrow", OBJPROP_COLOR, LawnGreen); // Изменение цвета в ярко-зеленый
ObjectSet("Arrow", OBJPROP_ARROWCODE, 241); // Направление стрелки вверхObjectCreate("Text", 21, 0, T, P); // Создание текстового объекта
ObjectSetText("Text", "Open buy-order by RSI", 6, "Times New Roman", Navy); // Текст, шрифт, стиль, цвет
}
}
}
//-------------------------------------------------------------------- return;
}
Il fatto è che l'EA apre immediatamente un ordine di acquisto, nonostante il valore dell'indicatore, e non vuole chiuderlo. Oggetti come testo e frecce non appaiono.
Ho scritto un EA, ma non funziona in tutto)))) o non funziona correttamente. Ho frugato in giro, sistemando molte cose, ma tuttavia, l'EA non funziona.
Ecco un frammento del calcolo delle decisioni di trading basate sull'indicatore RSI:
Il fatto è che l'EA apre immediatamente un ordine di acquisto, nonostante il valore dell'indicatore, e non vuole chiuderlo. Oggetti come testo e frecce non appaiono.
Aiutatemi a capire questo)) sono nuovo a questo
if (RSI_1 > RSI_0 && RSI_0 > 70 && RSI_1 > RSI_2) // Если индикатор превышает значение 70 и виден поворот вниз
Quindi devi scrivere ogni disuguaglianza separatamente nelle condizioni? Se generalizzi in qualche modo, sarà visto come un errore? Allora perché il programma dice che non ci sono errori durante la compilazione?
Quindi devi scrivere ogni disuguaglianza separatamente nelle condizioni? Se lo generalizzi in qualche modo, sarà percepito come un errore? Allora perché il programma dice che non c'è nessun errore durante la compilazione?
Non c'è nessun errore, semplicemente non si ottiene il risultato che ci si aspetta.
...Come si fa a cercare la causa in una situazione come questa?
Per puro caso mi ci sono imbattuto. Bisogna semplificare le cose. Commentare tutto, decommentare la prima importazione, compilare, chiamare le funzioni, ecc.
Integer: Non ha senso cambiare Close in Open, ci saranno pochi cambiamenti. È più facile non preoccuparsi di queste sciocchezze, ma prendere i dati dalla barra formata.
Non c'è nessun errore, semplicemente non si ottiene il risultato che ci si aspettava.
L'ho capito)) un ordine è stato aperto immediatamente senza ulteriori modifiche, perché ho dovuto scrivere NULL invece di Symbol() nella linea:
RSI_1=iRSI(Symbol(), 0, 14, PRICE_CLOSE, 1); // Получаем данные от RSI
Devi scrivere NULL invece di Symbol(), perché c'è una discrepanza nei tipi di variabili. A causa di questo, ho visto RSI come un valore nullo, quindi l'ho aperto immediatamente, perché la condizione ha funzionato.
Ora l'ho sistemato e tutto va bene.
L'unico problema è che gli oggetti vengono creati solo una volta al primo scambio.
È necessario aggiungere al codice in questa situazione. Creare una variabile esterna, per esempio Appled_Price.
E cambiate tutto PRICE_CLOSE nel codice in Appled_Price.
Ah, sì, scusate, intendevo le nuove build, e c'è un codice un po' insolito.
Questo è il problema, il codice non ha un prezzo a forma libera, tutto è in array, non si può cambiare, ho provato (((
E se funzionasse, come fare una selezione da un elenco a discesa (come nell'immagine della mia domanda)?
Questo è il punto, non c'è un prezzo libero nel codice, non si può semplicemente sostituirlo((((
Prova qui
cambia la chiusura in apertura. Se inizia a contare per aperto, allora scavate in questa direzione come cambiare questo valore. Ora non posso eseguire il terminale beta per guardare nel suo editor.
Cambiate il valore qui prima:
Saluti a tutti))
Ho scritto un EA, ma non funziona in tutto)))) o non funziona correttamente. Ho frugato in giro, sistemando molte cose, ma tuttavia, l'EA non funziona.
Ecco un frammento del calcolo delle decisioni di trading basate sull'indicatore RSI:
//--------------------Данные------------------------------------
Il fatto è che l'EA apre immediatamente un ordine di acquisto, nonostante il valore dell'indicatore, e non vuole chiuderlo. Oggetti come testo e frecce non appaiono.
Aiutatemi a capire questo)) sono nuovo a questo
Saluti a tutti))
Ho scritto un EA, ma non funziona in tutto)))) o non funziona correttamente. Ho frugato in giro, sistemando molte cose, ma tuttavia, l'EA non funziona.
Ecco un frammento del calcolo delle decisioni di trading basate sull'indicatore RSI:
//--------------------Данные------------------------------------
Il fatto è che l'EA apre immediatamente un ordine di acquisto, nonostante il valore dell'indicatore, e non vuole chiuderlo. Oggetti come testo e frecce non appaiono.
Aiutatemi a capire questo)) sono nuovo a questo
Quindi devi scrivere ogni disuguaglianza separatamente nelle condizioni? Se generalizzi in qualche modo, sarà visto come un errore? Allora perché il programma dice che non ci sono errori durante la compilazione?
Quindi devi scrivere ogni disuguaglianza separatamente nelle condizioni? Se lo generalizzi in qualche modo, sarà percepito come un errore? Allora perché il programma dice che non c'è nessun errore durante la compilazione?
Non c'è nessun errore, semplicemente non si ottiene il risultato che ci si aspetta.
...Come si fa a cercare la causa in una situazione come questa?
Per puro caso mi ci sono imbattuto. Bisogna semplificare le cose. Commentare tutto, decommentare la prima importazione, compilare, chiamare le funzioni, ecc.
Non ha senso cambiare Close in Open, ci saranno pochi cambiamenti. È più facile non preoccuparsi di queste sciocchezze, ma prendere i dati dalla barra formata.
Non c'è nessun errore, semplicemente non si ottiene il risultato che ci si aspettava.
L'ho capito)) un ordine è stato aperto immediatamente senza ulteriori modifiche, perché ho dovuto scrivere NULL invece di Symbol() nella linea:
Devi scrivere NULL invece di Symbol(), perché c'è una discrepanza nei tipi di variabili. A causa di questo, ho visto RSI come un valore nullo, quindi l'ho aperto immediatamente, perché la condizione ha funzionato.
Ora l'ho sistemato e tutto va bene.
L'unico problema è che gli oggetti vengono creati solo una volta al primo scambio.