// Мувинг и цена double MA10; double Price; // Есть или нет позиция и ее номер int Pos; int Magic; double Lot=0.1; double SL; double TP; int Slippage=3;
//-------------------------------------------------------------------- // Поиск условий для покупки и продажи //--------------------------------------------------------------------
И вот он, зараза, несмотря на то, что должен торговать только одной позицией (есть - ищем условия на продажу, нет - ищем условия на покупку), открывает большое количество позиций, и потом их не закрывает. Я уже голову поломал. Подскажите, что не так?
Но всё-таки - почему он вообще покупает мого позиций? Ведь вначале ему сразу говорится, что если позиция есть - ты сюда не ходи, ты туда ходи? Он, по задумке, в этот кусок кода даже попадать не должен. Или я что не понимаю?
Я экспортировал 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;
}
而这段代码,尽管它应该只交易一个头寸(是的,我们应该寻找卖出条件,不,我们应该寻找买入条件),但它打开了大量的头寸,然后不关闭它们。我的头已经坏了。你能告诉我什么是错的吗?
Всем привет!
Простой алгоритм никак не могу реализовать:
После покупки/продажи закрытие ордера через 2 бара.
Кроме таймера ничего лучше придумать не могу, но у таймера есть привязка к тайм фрейму, а мне необходимо через n баров.
查看未平仓订单,看看它们是什么时候开的,并与当前时间进行比较,两个柱子已经过去了,关闭它们。Ну естественно будет происходить докачка, с чего вдруг она должна происходить конвертация из минуток.
Можно взять исходный CSV и прогнать самописной прогой для получения на выходе в файлах всех стандартных таймфремов и импортировать их.
我似乎把它和MT5搞混了--似乎更高的时间段是由1分钟的时间段生成的,而在MT4中则是同样的老式方法。
Скрипт в CodeBase лежит, так и называется период конвертор
谢谢你!
周期转换器对图表来说是好的,但你不能把它喂给测试器。
哎呀,看了看它的工作原理,它确实写了一个重新编码的 历史文件。https://www.mql5.com/ru/code/8560
И вот он, зараза, несмотря на то, что должен торговать только одной позицией (есть - ищем условия на продажу, нет - ищем условия на покупку), открывает большое количество позиций, и потом их не закрывает. Я уже голову поломал. Подскажите, что не так?
在CheckBuy中增加了一个如果opener顺序大于0,则退出的选项。
в CheckBuy добавь иф опен ордерс больше нуля, то выходим.
是的,我马上去做。谢谢。(笑)。
但还是要问,为什么他一开始就买了很多仓位?毕竟,在开始时,他立即被告知,如果有一个位置 - 你不去这里,你去那里?按照想法,他甚至不应该进入这块代码。或者,也许我不理解它?
Ага, щас добавлю. Спасибо.
Но всё-таки - почему он вообще покупает мого позиций? Ведь вначале ему сразу говорится, что если позиция есть - ты сюда не ходи, ты туда ходи? Он, по задумке, в этот кусок кода даже попадать не должен. Или я что не понимаю?
虽然我现在更仔细地看了代码,但没有半升的东西是很难理解的,我把我的电子邮件发给你,试着解释我在那里做了什么。