Ответить в теме
Страница 489 из 489
Первая ... 479 488 Последняя

Показаны сообщения: с 9,761 по 9,763 из 9763

Тема: MQL4: Бесплатное написание программ

 Перейти в классический вид темы
     
  1. ТОП сообщений
    2021-08-01   21:23
    Лучший ответ #1
    Накопленные выплаты 180111 RUB

    Цитата Сообщение от zvarichyura Посмотреть сообщение
    там в самом конце подсчет ордеров выдает ошибку, вроде все правильно написано , а я не могу понять в чем дело,
    Должно быть примерно так.
    Код:
    int count(int type)
    {
    int cnt = 0;
    if(OrdersTotal() > 0)
    for(int i = 0; i < OrdersTotal(); i++){
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    if(OrderSymbol() == Symbol() && OrderType() == type)
    if(OrderMagicNumber() == magic     || 
    OrderMagicNumber() == magic + 1 ||
    OrderMagicNumber() == magic + 2)
    cnt++;
    return(cnt);
    }

    2021-08-01   11:14
    Лучший ответ #2

    Блин и еще подскажите как сюда нормально вставить код, а то он не компилируется и я его не вижу в терминале, из терминала можно скопировать и перенести сюда, а из самого метаэдитора я его не могу найти на своем компьютере, еще попробую его загрузить в текстовом режиме если не удастся открыть это вложение что выставил выше, давно не заходил на форум и все забыл как что делать.

    Код:
    extern string   comment        = "50% ФИБО";
    extern   int    magic          = 2013;  //Уникальный номер ордера
    extern   double lots           = 0.01;  //Рабочий лот
    extern   int    DistanceEntry  = 50;    //Величина свечи для открытия позиции
    extern   int    DistanceReEntry= 50;    //Величина свечи для продолжения серии ордеров
    extern   int    TimeToOpen     = 5;     //Время до закрытия свечи для открытия ордера
    extern   int    tradesperbar   = 1;     //Кол-во сделок на одном баре
    // Variables ***********************************************************************************************************
    int      i,bc=-1,cnt,ticket,number,tries=100,tpb,tps,dg,TimeToClose,Shift;
    double   TakeProfit,DisplayGapSize=0,pt,mt,distancee;                               
    datetime lastbuyopentime,lastsellopentime,LastTime;
    string   Gap,ScreenMessage; 
    double   arrTakeProfitB[],arrTakeProfitS[];
    int      arrprofB,arrprofS;    
    // Initialization ******************************************************************************************************
    int init()
    {
    dg=Digits;
    if(dg==3 || dg==5){pt=Point*10;mt=10;}else{pt=Point;mt=1;}
    Gap="";
    if (DisplayGapSize >0){
    for (int cc=0; cc< DisplayGapSize; cc++){
    Gap = StringConcatenate(Gap, " ");
    }   
    }
    return(0);}
    // Deinitialization ****************************************************************************************************
    int deinit()
    {return(0);}
    // Start ***************************************************************************************************************
    int start()
    {
    DisplayUserFeedback();
    // Tradesperbar **************************************************************************************  
    if(count(OP_BUY) > 0 || count(OP_SELL) > 0){distancee=DistanceReEntry;}else{distancee=DistanceEntry;}
    if(OrdersTotal() > 0){
    for(i=0;i <= OrdersTotal();i++){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol() ==Symbol() && OrderMagicNumber()==magic && OrderCloseTime()==0){
    if(OrderType()==OP_BUY){
    lastbuyopentime =OrderOpenTime();
    }
    if(OrderType()==OP_SELL){
    lastsellopentime =OrderOpenTime();
    }
    }
    }
    }
    if(tradesperbar==1){
    if(lastbuyopentime < Time[0])tpb=0;else tpb=1;
    if(lastsellopentime < Time[0])tps=0;else tps=1;
    }
    if(tradesperbar!=1 && bc!=Bars){tpb=0;tps=0;bc=Bars;}
    // TradeTime finding***********************************************************************************************
    TimeToClose  =Time[0]+Period()*60-CurTime();
    TimeToClose= (TimeToClose-TimeToClose%60)/60;
    // Trade setting **************************************************************************************  
    bool   buy                 = false;
    bool   sell                = false;
    // TradeSignal finding**************************************************************************************************
    if(Close[0] >= (Open[0]+distancee*pt) && TimeToOpen==TimeToClose && count(OP_BUY) <= 0){sell=true;}
    if(Close[0] <= (Open[0]-distancee*pt) && TimeToOpen==TimeToClose && count(OP_SELL) <= 0){buy=true;}
    // Open Orders**************************************************************************************************
    ticket=0;
    number=0;
    if(buy && tpb < tradesperbar){  
    while(ticket <= 0 && number < tries){
    while(!IsTradeAllowed())Sleep(5000);
    RefreshRates();
    ticket=OrderSend(Symbol(),OP_BUY,lots,NormalizeDouble(Ask,dg),0,0,0,comment+". Magic: "+DoubleToStr(magic,0),magic,0,Green);
    if(ticket < 0){
    number++;
    }
    }
    if(ticket<=0){}else tpb++;
    }
    ticket=0;
    if(sell && tps < tradesperbar){
    while(ticket <= 0 && number < tries){
    while(!IsTradeAllowed())Sleep(5000);
    RefreshRates();
    ticket=OrderSend(Symbol(),OP_SELL,lots,NormalizeDouble(Bid,dg),0,0,0,comment+". Magic: "+DoubleToStr(magic,0),magic,0,Red);
    if(ticket < 0){
    number++;
    }
    }
    if(ticket<=0){}else tps++;
    }
    // Take Profit finding & Modify**************************************************************************************************
    for(i=OrdersTotal();i>=0;i--){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol() ==Symbol() && OrderMagicNumber()==magic && OrderCloseTime()==0){
    if(OrderType()==OP_BUY){
    LastTime=OrderOpenTime();
    }
    if(OrderType()==OP_SELL){
    LastTime=OrderOpenTime();
    }  
    }
    }
    Shift=iBarShift(NULL,0,LastTime);
    arrprofB=0;arrprofS=0;
    ArrayResize(arrTakeProfitS,OrdersTotal());
    ArrayResize(arrTakeProfitB,OrdersTotal());
    for(i=0;i<=OrdersTotal();i++){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol() ==Symbol() && OrderMagicNumber()==magic && OrderCloseTime()==0){
    if(OrderType()==OP_BUY){
    arrTakeProfitB[arrprofB]=OrderTakeProfit();
    arrprofB++;
    }
    if(OrderType()==OP_SELL){
    arrTakeProfitS[arrprofS]=OrderTakeProfit();
    arrprofS++;
    }  
    }
    }
    for(i=0;i<=OrdersTotal();i++){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol() ==Symbol() && OrderMagicNumber()==magic && OrderCloseTime()==0){
    if(OrderType()==OP_BUY && OrderTakeProfit()<=0){
    TakeProfit=Bid+(((Open[Shift]-Close[0])/pt)/2)*pt;
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Red);
    }
    if(OrderType()==OP_SELL && OrderTakeProfit()<=0){
    TakeProfit=Ask-(((Close[0]-Open[Shift])/pt)/2)*pt;
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Red);
    }  
    }
    }
    if(OrdersTotal()>=1){
    for(i=0;i<=OrdersTotal();i++){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol() ==Symbol() && OrderMagicNumber()==magic && OrderCloseTime()==0 && OrderTakeProfit()>0){
    if(arrTakeProfitB[i+1]!=0){
    if(OrderType()==OP_BUY && arrTakeProfitB[i]>arrTakeProfitB[i+1]){
    if(OrderOpenPrice()-1 < arrTakeProfitB[i+1]-3*pt){
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),arrTakeProfitB[i+1],0,Red);}
    }
    if(OrderType()==OP_SELL && arrTakeProfitS[i]<arrTakeProfitS[i+1]){
    if(OrderOpenPrice()-1 > arrTakeProfitB[i+1]+3*pt){
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),arrTakeProfitS[i+1],0,Red);}
    } 
    } 
    }
    }
    }
    return(0);//Start
    }
    //+------------------------------------------------------------------+
    void DisplayUserFeedback()
    {
    ScreenMessage = "";
    ScreenMessage = StringConcatenate(ScreenMessage,Gap,OrdersTotal(), NL);  
    ScreenMessage = StringConcatenate(ScreenMessage,Gap, "50% ФИБО,  NL");
    Comment(ScreenMessage);
    }
    // подсчет ордеров
    int count(int type){
    cnt=0;
    if(OrdersTotal()>0){
    for(i=OrdersTotal();i>=0;i--){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol()==Symbol() && OrderType()==type && (OrderMagicNumber()==magic+1 || OrderMagicNumber()==magic || OrderMagicNumber()==magic+2))cnt++;
    }
    return(cnt);
    }
    }

    2021-08-01   10:59
    Лучший ответ #3

    Здравствуйте господа программисты, помогите устранить одну ошибку в коде подсчета ордеров, очень давно не занимался программированием и хорошенько все подзабыл. было у меня три робота которые совместно писались тут, но по по истечению обстоятельств ( украли ноутбук) вся информация была утеряна. как то накопал в этой теме по кусочкам что то похожее по своим постам из архивов по кусочкам. Не могу понять где причина и еще есть 11 предупреждений потому что на обновленном метаэдиторе чуть все по другому.
    Вложение 5123311

    Вложение
    Превью
    2021-08-04   22:29
    Лучший ответ #4
    Накопленные выплаты 0 RUB

    здравствуйтеcmillion я так думаю на одном графике зоны подд..и сопротивл..н4 н1 м30 м15 максимум и минимум предыдущего дня и утренний по скользящим орентируемся куда идет тренд.Входить можно при пробтии и закреплении макс и мин предыдущего дня или же после пробития утреннего флета..как то так.Вложение 5135226

    Вложение
    Превью
    2021-08-01   12:44
    Лучший ответ #5

    Привет, ого как все просто получилось, а я тут мучаюсь все позабыл, как все делается спасибочки, но все равно чуть не так у меня получилось, сюда скопировать и просто вставить не получилось, а я сначала его сохранил на компьютере и уже после с помощью клавиши вложения на этом форуме и клавишей вставить в текст, то все получилось вставить в текст.
    Вложение 5123562

    Вложение
    Превью
    2021-08-01   12:10
    Лучший ответ #6
    Накопленные выплаты 91422 RUB

    Цитата Сообщение от zvarichyura Посмотреть сообщение
    Блин и еще подскажите как сюда нормально вставить код, а то он не компилируется и я его не вижу в терминале, из терминала можно скопировать и перенести сюда, а из самого метаэдитора я его не могу найти на своем компьютере,
    Слева вверху чарта "жмякаешь" по "Файл", потом жмешь на "Открыть каталог данных", затем на "MQL" и как бы усЁ.. выбираешь что надо..
    Цитата Сообщение от zvarichyura Посмотреть сообщение
    помогите устранить одну ошибку в коде подсчета ордеров, очень давно не занимался программированием и хорошенько все подзабыл.
    Взял файл с 9755 сообщения. Исправил ошибку, убрал предепреждения.. и там по мелочи. В тестере не проверяется, сильно не разбирался что к чему, похоже нужно задавать время открытия ордеров..

    Вложение
    Превью
  2. линк#1
    V.I.P.
    Сама доброта
     
    villi311 наивысший уровень репутации villi311 наивысший уровень репутации villi311 наивысший уровень репутации villi311 наивысший уровень репутации villi311 наивысший уровень репутации villi311 наивысший уровень репутации villi311 наивысший уровень репутации villi311 наивысший уровень репутации villi311 наивысший уровень репутации villi311 наивысший уровень репутации villi311 наивысший уровень репутации Аватар для villi311
    Регистрация:
    11.12.2010
    Пол:
    Мужчина
    Сообщений:
    16,239
    Поставил лайков:
    8,106
    Получено лайков:   7,911
    в 3,794 сообщениях
    49%
    ПодписатьсяПодписаться
    Подписано 0
    Продолжение темы - Бесплатное написание программ на MQL4


    В этой ветке рассматриваются заявки на бесплатное исполнение торговых роботов, скриптов и индикаторов. Реализация ваших идей возможна на основе следующих простых правил:
    1) Все описания, коды, изображения и т.п. должны открыто размещаться в данной ветке.
    2) Создание программ, за редчайшим исключением, осуществляется на основе идей, а не чужих кодов. Т.е. копаться в чужом коде в рамках этой ветки мы вряд ли станем.
    3) Программисты имеют право отказать в исполнении той или иной идей без объяснения причин. Как правило это связано с бессмысленностью идеи, которая становится очевидной ещё на стадии чтения задания;
    4) Все программы исполняются без всякой очереди, по желанию программиста.
    5) Задание должно быть максимально точным и минимально абстрактным. В идеале в задании должны быть описаны конкретные правила "если X, то Y". Поясняющие изображения (в т.ч. и скриншоты) будут дополнительным плюсом -- как правило они способствуют лучшему пониманию задания.
    6) Сразу продумывайте все детали при составлении ТЗ. Последующее уточнение деталей в процессе написания советника занимает очень много времени программиста.

    Убедительная просьба относиться уважительно к программистам, администрации форума и друг к другу.


  3. линк#9765
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,434
    Накопленные выплаты (Подробнее):
    180111 RUB
    Поставил(а) лайков:
    939
    Получено лайков:   7,537
    в 3,647 сообщениях
    101%
    ПодписатьсяПодписаться
    Подписано 6
    Цитата Сообщение от zvarichyura Посмотреть сообщение
    там в самом конце подсчет ордеров выдает ошибку, вроде все правильно написано , а я не могу понять в чем дело,
    Должно быть примерно так.
    Код:
    int count(int type)
    {
      int cnt = 0;
      if(OrdersTotal() > 0)
        for(int i = 0; i < OrdersTotal(); i++){
          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
            if(OrderSymbol() == Symbol() && OrderType() == type)
              if(OrderMagicNumber() == magic     || 
                 OrderMagicNumber() == magic + 1 ||
                 OrderMagicNumber() == magic + 2)
                cnt++;
      return(cnt);
    }


  4. post_thanks Получено лайков: 3

    docikstorm (01.08.2021), zvarichyura (01.08.2021), Незарегистрированный (1 пользователь)

  5. линк#9766
    В начале пути
    dadi стараюсь положительно себя зарекомендовать Аватар для dadi
    Регистрация:
    14.04.2021
    Пол:
    Мужчина
    Сообщений:
    2
    Накопленные выплаты (Подробнее):
    0 RUB
    Поставил лайков:
    1
    Получено лайков:   0
    в 0 сообщениях
    0%
    ПодписатьсяПодписаться
    Подписано 0
    здравствуйтеcmillion я так думаю на одном графике зоны подд..и сопротивл..н4 н1 м30 м15 максимум и минимум предыдущего дня и утренний по скользящим орентируемся куда идет тренд.Входить можно при пробтии и закреплении макс и мин предыдущего дня или же после пробития утреннего флета..как то так.Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 20
Размер:	47.5 КБ
ID:	5135226

    Последний раз редактировалось dadi; 04.08.2021 в 22:38.

  6. post_thanks Получено лайков: 2

    Незарегистрированный (2 пользователя)

  7. линк#9767
    Модератор раздела АТС
    cmillion отличная репутация cmillion отличная репутация cmillion отличная репутация cmillion отличная репутация cmillion отличная репутация cmillion отличная репутация cmillion отличная репутация cmillion отличная репутация cmillion отличная репутация cmillion отличная репутация cmillion отличная репутация Аватар для cmillion
    Регистрация:
    01.03.2011
    Пол:
    Мужчина
    Сообщений:
    16,753
    Поставил лайков:
    1,254
    Получено лайков:   9,144
    в 5,510 сообщениях
    55%
    ПодписатьсяПодписаться
    Подписано 18
    Цитата Сообщение от dadi Посмотреть сообщение
    здравствуйтеcmillion я так думаю на одном графике зоны подд..и сопротивл..н4 н1 м30 м15 максимум и минимум предыдущего дня и утренний по скользящим орентируемся куда идет тренд.Входить можно при пробтии и закреплении макс и мин предыдущего дня или же после пробития утреннего флета..как то так.Вложение 5135226
    Для того чтобы Вам написали советник да еще и бесплатно, нужно составить более понятное задание. В задании не должно быть слов "можно" или "я так думаю".... Должно быть все четко и логично описано. Я понимаю, что Вы не программист, но попробуйте описать то что должен делать робот. Представьте , что Вы и есть тот робот и сами себе даете команды на открытие и закрытие позиций. Т.е. посмотрели на график, увидели там нужное событие. Например цена коснулась синей линии индикатора ХХХ тогда ставим отложенный ордер на красную линию индикатора УУУУ . Ну или что то в таком духе.... Примеры заданий можно посмотреть и в этой ветке и просто в сети набрать "примеры технического задания для написания торгового робота"

    Пишу на заказ советники, индикаторы и скрипты для MT4 и MT5
    Telegram: @mqlcmillion
    Email: ea@cmillion.ru
    WhatsApp +79283690333


Страница 489 из 489
Первая ... 479 488 Последняя

Подписанные на тему (148)

Похожие темы

  1. Написание программ на mql4 под заказ
    от Viper70 в разделе Доска объявлений
    Replies: 181
    Последнее сообщение: 08.09.2018, 16:00
  2. [Архив] MQL4: Бесплатное написание программ
    от ENSED в разделе MQL-программирование, АТС
    Replies: 15804
    Последнее сообщение: 28.11.2014, 20:35
  3. Replies: 51
    Последнее сообщение: 01.01.2014, 21:59
  4. Написание программ (советников, индикаторов) на MQL4
    от Ramben в разделе Доска объявлений
    Replies: 24
    Последнее сообщение: 07.11.2011, 12:21

Метки этой темы