[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 390

 
chief2000 >>:

Я экспортировал CSV-файл (1 мин с 1999 года) из МТ одного брокера. Попытался импортировать в МТ другого брокера - 1 минутки получил

без проблем, с 1999. Но вот что-то не пойму как во 2-м МТ получить 5, 15-мин и т.д. графики? - Т.е. после импортирования 1 минуток переключился на

5 минутный график и похоже МТ пытается докачать их из интернета, вместо конвертирования их из уже имеющихся 1-минуток.

Перегружал МТ - не помогло.

- Есть какое-нибудь нормальное решение для конвертирования 1 МИН в более высокие таймфреймы?

Beh, ovviamente ci sarà il download, quindi perché dovrebbe esserci una conversione dai verbali.

Puoi prendere il CSV originale ed eseguire un programma scritto da te per ottenere tutti i tempi standard nei file di output e importarli.

 

Ciao a tutti!

Non c'è modo di implementare un semplice algoritmo:

Dopo un acquisto/vendita un ordine si chiude dopo 2 barre.

Non riesco a pensare a niente di meglio di un timer, ma il timer è collegato a un timeframe e mi serve dopo n barre.

 

Salve di nuovo e di nuovo una domanda a cui non posso rispondere da solo.

Sto scrivendo un Expert Advisor per esercitarmi a piazzare ordini quando appare una condizione. Il compito è semplice: scambiare una sola posizione. Se il prezzo è superiore a МА10, compro; se è inferiore, vendo. Voglio testare la possibilità di usare i maghi degli ordini in modo che l'Expert Advisor chiuda esattamente gli ordini che ha piazzato lui stesso. C'è anche la seconda variante delle condizioni di acquisto e vendita (non le ho ancora aggiunte). E dovrebbe determinare da solo a quale condizione appartiene l'ordine - il numero magico è impostato nella funzione che attiva l'apertura di una posizione. Allo stesso modo, secondo le condizioni, all'inizio dovrebbe determinare se c'è una posizione o no e poi cercare le condizioni di acquisto o di vendita.


Ecco il codice:


// Мувинг и цена
double MA10;
double Price;
// Есть или нет позиция и ее номер
int Pos;
int Magic;
double Lot=0.1;
double SL;
double TP;
int Slippage=3;

//--------------------------------------------------------------------

void start()
{
MA10 = iMA(NULL,0,10,0,0,0,0);
Price = Bid;

CheckPos();
}

//--------------------------------------------------------------------

void CheckPos()
{
if(Pos==0)
CheckBuy();
CheckSell();
}

//--------------------------------------------------------------------
// Поиск условий для покупки и продажи
//--------------------------------------------------------------------

void CheckBuy()
{
if (NormalizeDouble(Price,Digits) > NormalizeDouble(MA10,Digits))
Magic=10;
Buy();
return;
}

//--------------------------------------------------------------------

void CheckSell()
{
if (NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits))
Sell();
return;
}

//--------------------------------------------------------------------
// Выставление ордеров
//--------------------------------------------------------------------

void Buy()
{
string Symb=Symbol();
Pos=1;

OrderSend(Symb, OP_BUY, Lot, Ask, Slippage, SL, TP, NULL, Magic);
return;
}
//--------------------------------------------------------------------

void Sell()
{
Pos=0;
OrderClose(Magic, Lot, Bid, Slippage);
return;
}


E questo codice, nonostante il fatto che dovrebbe negoziare solo una posizione (sì, dovremmo cercare condizioni di vendita, no, dovremmo cercare condizioni di acquisto), apre un gran numero di posizioni e poi non le chiude. La mia testa è già rotta. Puoi dirmi cosa c'è che non va?

 
sigma7i >>:

Всем привет!

Простой алгоритм никак не могу реализовать:

После покупки/продажи закрытие ордера через 2 бара.

Кроме таймера ничего лучше придумать не могу, но у таймера есть привязка к тайм фрейму, а мне необходимо через n баров.


Passa attraverso gli ordini aperti, vedi quando sono stati aperti e confrontali con il tempo corrente, sono passate due barre e chiudili.
 
splxgf >>:

Ну естественно будет происходить докачка, с чего вдруг она должна происходить конвертация из минуток.

Можно взять исходный CSV и прогнать самописной прогой для получения на выходе в файлах всех стандартных таймфремов и импортировать их.

Mi sembra di aver fatto confusione con MT5 - sembra che i timeframe più alti siano generati da periodi di 1 minuto, mentre in MT4 è la stessa vecchia maniera.

 
Vinin >>:

Скрипт в CodeBase лежит, так и называется период конвертор

Grazie!

 

Il convertitore di periodo è buono per i grafici, ma non puoi darlo in pasto a un tester.

Ops, ho guardato come funziona, scrive un file di cronologia ricodificato. https://www.mql5.com/ru/code/8560

 

И вот он, зараза, несмотря на то, что должен торговать только одной позицией (есть - ищем условия на продажу, нет - ищем условия на покупку), открывает большое количество позиций, и потом их не закрывает. Я уже голову поломал. Подскажите, что не так?

in CheckBuy aggiungere un ordine if opener maggiore di zero, quindi fuori.

 
splxgf >>:

в CheckBuy добавь иф опен ордерс больше нуля, то выходим.

Sì, me ne occuperò subito. Grazie.

Ma comunque, perché compra un sacco di posizioni in primo luogo? Dopo tutto, all'inizio gli viene subito detto che se c'è una posizione - non si va qui, si va là? Come mia idea, non dovrebbe nemmeno entrare in questo pezzo di codice. O forse non lo capisco?

 
Jahspear >>:

Ага, щас добавлю. Спасибо.

Но всё-таки - почему он вообще покупает мого позиций? Ведь вначале ему сразу говорится, что если позиция есть - ты сюда не ходи, ты туда ходи? Он, по задумке, в этот кусок кода даже попадать не должен. Или я что не понимаю?


Anche se ho guardato il codice più da vicino ora, è difficile capirlo senza un mezzo litro, ti manderò la mia email e cercherò di spiegare cosa ho fatto lì.
Motivazione: