Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 816
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
какраз эксперементировал с "архивом котировок" . обновляя для каждого графика отдельно историю добился что почти для всех графиков все начало работать корректно, за исключением нескольких экзотических пар, на них по паре раз удалял обновлял - нет новых данных для графика. в общем можно сказать вопрос решен
спасибо за оперативность))))
Уважаемые программисты...возникла проблема...создал советник...он открывает сделки нормально(в тестере)....но вот закрывает только сделки на покупку...на продажу он закрывает только по заверении тестирования... вот кусок кода....может вы мне поможете...
//---------------------------------------------------------------------------------------------------------
void CloseSell()
{
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol())
{
if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Green);
}
}
}
}
//+------------------------------------------------------------------+
void CloseBuy()
{
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol())
{
if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Green);
}
}
}
}
//+------------------------------------------------------------------+
void OpenSellOrder()
{
mlots = GetLots();
if (AutoSL) sl = CalcSL(OP_SELL);
else sl = ND(Bid - StopLoss*Point);
tp = ND(Bid - TakeProfit*Point);
ticket = OrderSendReliable(Symbol(), OP_SELL, mlots, Bid, Slippage, 0, 0, comment, Magic, 0, Red);
if(ticket > 0)
OrderModifyReliable(OrderTicket(), OrderOpenPrice(), sl, tp, 0);
}
//+------------------------------------------------------------------+
int OpenBuyOrder()
{
mlots = GetLots();
if (AutoSL) sl = CalcSL(OP_BUY);
else sl = ND(Bid - StopLoss*Point);
tp = ND(Ask + TakeProfit*Point);
ticket = OrderSendReliable(Symbol(), OP_BUY, mlots, Ask, Slippage, 0, 0, comment, Magic, 0, Blue);
if(ticket > 0)
OrderModifyReliable(OrderTicket(), OrderOpenPrice(), sl, tp, 0);
}
//+------------------------------------------------------------------+
void ModifyLoss()
{
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderType() == OP_BUY)
{
sl = ND(OrderOpenPrice() + LossPoints*Point);
if (OrderStopLoss() < sl && (Ask - OrderOpenPrice())/Point >= LossLimit)
{
if (sl != ND(OrderStopLoss()))
OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);
}
}
else
if (OrderType() == OP_SELL)
{
sl = ND(OrderOpenPrice() - LossPoints*Point);
if (OrderStopLoss() > sl && (OrderOpenPrice()-Bid)/Point >= LossLimit)
{
if (sl != ND(OrderStopLoss()))
OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);
}
}
}
}
}
//+------------------------------------------------------------------+
double CalcSL(int otype)
{
double sloss = 10000000;
if (otype == OP_BUY)
{
double min;
for (int i=1; i<=SLBars; i++)
{
min = iLow(NULL, 0, i);
if (min < sloss)
sloss = min;
}
sloss = ND(sloss - SLPips*Point);
if ((Ask-sloss)/Point < MinSL)
sloss = ND(Ask - MinSL*Point);
if ((Ask - sloss)/Point > MaxSL)
sloss = ND(Ask - MaxSL*Point);
else
sloss = ND(sloss - SLPips*Point);
return(sloss);
}
else
if (otype == OP_SELL)
{
double max;
sloss = 0;
for (i=1; i<=SLBars; i++)
{
max = iHigh(NULL, 0, i);
if (max > sloss)
sloss = max;
}
if ((sloss - Bid)/Point < MinSL)
sloss = ND(Bid + MinSL*Point);
if ((sloss - Bid)/Point > MaxSL)
sloss = ND(Bid + MaxSL*Point);
else
sloss = ND(sloss + SLPips*Point);
return(sloss);
}
return(0);
}
//+------------------------------------------------------------------+
double GetLots()
{
if (!UseMM) return(FixLot);
double clots;
clots = AccountBalance() / 10000.0 * LotsFor10000;
clots = MathMax(clots, MarketInfo(Symbol(), MODE_MINLOT));
clots = MathMin(clots, MarketInfo(Symbol(), MODE_MAXLOT));
clots = NormalizeDouble(clots, 2);
return (clots);
}
//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0;
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
for (int trade = OrdersTotal() - 1; trade >= 0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
int CountTrades()
{
return(CountBuy() + CountSell());
}
//+------------------------------------------------------------------+
double ND(double value)
{
return (NormalizeDouble(value, Digits));
Предварительно выбрав ордер OrderSelect (Тикет_первого_ордера, SELECT_BY_TICKET);
if(OrderOpenPrice()+10*Point==Ask)
OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);
ПО-МОЕМУ РАБОЧАЯ ВЕТКА...упсс сори
Доброй всем ночи!!! С новым годом!
Решил сохранить данные буферов через файл. Создать файл и записать в него проблем особых нет, а вот прочитать из него сложности.
Вот пробная программка. Помогите пож. Проблема в том, что либо идет лишняя запись в файл, либо она не читается из файла. Хочу просто читать по списку из файла в , например, массивы... ЕСли лень писать прошу ссылку на похожий материал, а нашел только учебник... НО ЛУЧШЕ ГОТОВЫЙ ВАРИАНТ НА САЙТЕ))):
ЗАРАНЕЕ СПАСИБО В ЛЮБОМ СЛУЧАЕ!!!))):
Увы, с ЗАПИСЬЮ в файле не все так просто!!!(((
А казалось ...наоборот.
С чтением благодаря учебным примерам разобрался,а вот ЗАПИСЬ в файл требует более сложного кода. Короче придурел уже... А как двигать запись согласуя с Чтением из файла не соображу.
Исправил установку уровней для баров дня и для истории (исходные буферные данные).
ВОПРОС ТОТ ЖЕ. ПРОШУ НАМЕКНУТЬ, ЕСЛИ МНОГО ПИСАНИНЫ, НА ТО КАК ЛУЧШЕ ЗАПИСЫВАТЬ ДАННЫЕ БУФЕРОВ В ФАЙЛ.
СИПРАВЛЕННЫЙ КОД ПРОГИ
САМ НАШЕЛ ГДЕ ИСКАТЬ ОТВЕТЫ НА МОИ ВОПРОСЫ...О ФАЙЛОВЫХ ОПЕРАЦИЯХ))):
СКРИПТЫ ПО ВЫВОДУ ИНФОРМАЦИИ ИЗ ФАЙЛА НА ГРАФИК.
ИСТОРИИ БЕСПЛАТНЫХ КОДОВ МТ4 ЕСТЬ ВАРИАНТЫ ПЕРЕНОСА ДАННЫХ В ФАЙЛ, ТАК И ОБРАТНАЯ ОПЕРАЦИЯ.
ВСЕМ СПАСИБО, ВСЕМ ЧАО)))):
Есть большой файл в котором даты в таком виде "20141231". Чтобы преобразовать строку в формат datetime нужны точки "YYYY.MM.DD" между годом, месяцем и числом.
Как можно это сделать?
Всем привет, хочу что бы советник находил самый высокий хай или низкий лоу за 100 баров, подскажите где, что прочитать?
Читать можно справку, там всё есть, с примерами.