[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 390

 
chief2000 >>:

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

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

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

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

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

嗯,当然会有下载,那么为什么要从会议记录中进行转换。

你可以拿着原始CSV,运行一个自己编写的程序,在输出文件中获得所有的标准时间段,并导入这些文件。

 

大家好!

我没有办法实现一个简单的算法。

买入/卖出后,订单在2个柱子后关闭。

我想不出有什么比定时器更好的了,但定时器是与一个时间框架相联系的,我需要在n个柱子之后。

 

你好,又是一个我自己无法回答的问题。

我正在编写一个专家顾问,以练习在条件出现时下订单。任务很简单:只交易一个位置。如果价格高于МА10,我就买入;如果低于,我就卖出。我想测试一下使用订单魔术师的可能性,这样专家顾问就能准确地关闭它自己下的那些订单。还有买入和卖出条件的第二种变体(我还没有添加)。而且它应该自己确定订单属于什么条件--神奇的数字是在触发开仓的函数中设置的。同样,根据条件,在一开始它就应该确定是否存在头寸,然后寻找买入或卖出条件。


以下是代码。


// Мувинг и цена
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;
}


而这段代码,尽管它应该只交易一个头寸(是的,我们应该寻找卖出条件,不,我们应该寻找买入条件),但它打开了大量的头寸,然后不关闭它们。我的头已经坏了。你能告诉我什么是错的吗?

 
sigma7i >>:

Всем привет!

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

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

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


查看未平仓订单,看看它们是什么时候开的,并与当前时间进行比较,两个柱子已经过去了,关闭它们。
 
splxgf >>:

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

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

我似乎把它和MT5搞混了--似乎更高的时间段是由1分钟的时间段生成的,而在MT4中则是同样的老式方法。

 
Vinin >>:

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

谢谢你!

 

周期转换器对图表来说是好的,但你不能把它喂给测试器。

哎呀,看了看它的工作原理,它确实写了一个重新编码的 历史文件。https://www.mql5.com/ru/code/8560

 

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

在CheckBuy中增加了一个如果opener顺序大于0,则退出的选项。

 
splxgf >>:

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

是的,我马上去做。谢谢。(笑)。

但还是要问,为什么他一开始就买了很多仓位?毕竟,在开始时,他立即被告知,如果有一个位置 - 你不去这里,你去那里?按照想法,他甚至不应该进入这块代码。或者,也许我不理解它?

 
Jahspear >>:

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

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


虽然我现在更仔细地看了代码,但没有半升的东西是很难理解的,我把我的电子邮件发给你,试着解释我在那里做了什么。
原因: