Торговая система Kuklovod.

Делимся и обмениваемся опытом в области торговых стратегий, выносим на обсуждение свои идеи. Для каждой стратеги создаем отдельную тему.

Re: Торговая система Kuklovod.

Сообщение denis77515 » 29 июн 2014, 16:03

вот кусочек кода в общем по этой системе открывается новая дневная свеча и индикатор дает сигнал, то вызываем функции открытия ордеров.

void OnTick()
{ int timeprev;
oLots=Lots;
usd = iCustom(Symbol(),PERIOD_D1,"Kuklovod_USD",7,0);
Total=CountTrades();
plus = false; minus = false;
if(usd >= indi_plus_usd && usd <= indi_plus_usd1) plus = true;
if(usd <= indi_minususd && usd >= indi_minususd1) minus = true;
if(!plus && !minus) return;
if(Total == 0)
{
if(Time[0] == timeprev) return;
timeprev=Time[0];
{
if(plus == true && timeprev) {Open_Minus();}
if(plus == true && timeprev) {Open_Plus();}
}
}
denis77515
Участник
 
Сообщений: 11
Зарегистрирован: 27 июн 2014, 04:29

Re: Торговая система Kuklovod.

Сообщение Николай » 29 июн 2014, 17:37

denis77515 Вы выложите весь код а то я не смогу вам помоч
чтобы я в свой редактор установил и посмотрел какое он предупреждение даёт
угадывать что к чему присоединяется не могу Изображение
Как и на чем заработать уже за первый месяц и делать это снова и снова
Регистрация и учебные материалы бесплатно.
Аватар пользователя
Николай
Модератор
 
Сообщений: 175
Зарегистрирован: 06 фев 2014, 22:31

Re: Торговая система Kuklovod.

Сообщение denis77515 » 29 июн 2014, 17:42

Хорошо сейчас закончу его.
denis77515
Участник
 
Сообщений: 11
Зарегистрирован: 27 июн 2014, 04:29

Re: Торговая система Kuklovod.

Сообщение denis77515 » 29 июн 2014, 18:00

Ну вот вроде бы закончил полностью корзину ордеров USD c входом как положено при показаниях индикатора 10(30) или -10(-30) и 70 и -70 с доливкой ордеров.
Лишьбы все это заработало ? :U
У вас нет доступа для просмотра вложений в этом сообщении.
denis77515
Участник
 
Сообщений: 11
Зарегистрирован: 27 июн 2014, 04:29

Re: Торговая система Kuklovod.

Сообщение Николай » 29 июн 2014, 19:18

Time[0] относится к Типу datetime
а у вас timeprev Тип int
получается расхождение по типам тоесть if(datetime == int) return;
по этому и выдаёт предупреждение
вот подредоктировал
У вас нет доступа для просмотра вложений в этом сообщении.
Как и на чем заработать уже за первый месяц и делать это снова и снова
Регистрация и учебные материалы бесплатно.
Аватар пользователя
Николай
Модератор
 
Сообщений: 175
Зарегистрирован: 06 фев 2014, 22:31

Re: Торговая система Kuklovod.

Сообщение denis77515 » 01 июл 2014, 15:31

Николай Здраствуйте,у меня просьба к вам.Посмотрите код,я вроде бы все правильно написал,но смущает меня переменная oLots Если я ее пишу в ордер сенд. то советник не чего не открывает.Один штрих остался вроде бы.Я понять не могу почему ?
У вас нет доступа для просмотра вложений в этом сообщении.
denis77515
Участник
 
Сообщений: 11
Зарегистрирован: 27 июн 2014, 04:29

Re: Торговая система Kuklovod.

Сообщение Николай » 02 июл 2014, 01:04

denis77515 писал(а):Николай Здравствуйте,у меня просьба к вам.Посмотрите код,я вроде бы все правильно написал,но смущает меня переменная oLots Если я ее пишу в ордер сенд. то советник не чего не открывает.Один штрих остался вроде бы.Я понять не могу почему ?

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

Теперь по делу даю подсказку
я не вижу в вашем коде функцию MarketInfo(); для мультивалютного советника это важная функция
если вы установите на GBPUSD вот так у вас на EURUSD ордер не откроется даст ошибку (неправильная цена)
OrderSend("EURUSD",OP_BUY,NormalizeDouble(Lot,2),Ask,0,0,0," = Buy = ",id,0)

а если так всё откроет
OrderSend("EURUSD",OP_BUY,NormalizeDouble(Lot,2),MarketInfo("EURUSD",MODE_ASK),0,0,0," = Buy = ",id,0);
У вас нет доступа для просмотра вложений в этом сообщении.
Как и на чем заработать уже за первый месяц и делать это снова и снова
Регистрация и учебные материалы бесплатно.
Аватар пользователя
Николай
Модератор
 
Сообщений: 175
Зарегистрирован: 06 фев 2014, 22:31

Re: Торговая система Kuklovod.

Сообщение Николай » 02 июл 2014, 02:23

Вот набросал вам тест как открыть ордер на другой паре
CountSell() CountBuy() для одной карзины пойдёт для 2 или 3-х надо переделывать
Код: выделить все
//+------------------------------------------------------------------+
//|                                                         test.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict

 extern double  Lot        = 0.01;       //объем лота
 extern int     slip       = 10;         //проскальзывание при установке ордеров
 extern int     id         = 0;          //идентификатор
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(){

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick(){
if(CountBuy() == 0 && CountSell() == 0){
 OpenBuy("USDCAD",Lot,MarketInfo("USDCAD",MODE_ASK),id);
 OpenBuy("USDCHF",Lot,MarketInfo("USDCHF",MODE_ASK),id);
 OpenBuy("USDJPY",Lot,MarketInfo("USDJPY",MODE_ASK),id);
 
 OpenSell("AUDUSD",Lot,MarketInfo("AUDUSD",MODE_BID),id);
 OpenSell("NZDUSD",Lot,MarketInfo("NZDUSD",MODE_BID),id);
 OpenSell("GBPUSD",Lot,MarketInfo("GBPUSD",MODE_BID),id);
 OpenSell("EURUSD",Lot,MarketInfo("EURUSD",MODE_BID),id);
 }
}
//===========================================================================================================
//--- Команда установить BUY ордер немедленного исполнения ----------------------------------------------
 void OpenBuy(string Pair,double lot_b,double ask,int Identif,double sl=0,double tp=0){
    int InstallBuy=0;
    while(IsTradeContextBusy()){Sleep(100);} //Если торговый поток занят, ожидаем
    RefreshRates(); //обновляем данные 
    InstallBuy=OrderSend(Pair,OP_BUY,NormalizeDouble(lot_b,2),ask,slip,sl,tp," = Buy = ",Identif,0);   // Открываем BUY ордер
    if(InstallBuy<0){Alert("Функция OpenBuy","\n","Валютная пара "+Pair,"\n","Команда: открыть ордер Buy","\n", "Ответ сервера: " ,errors(GetLastError()) );} //если неудачно выводим сообщение
     
 }
//===========================================================================================================
//--- Команда установить Sell ордер немедленного исполнения --------------------------------------------
 void OpenSell(string Pair,double lot_s,double bid,int Identif,double sl=0,double tp=0){
    int InstallSell=0;
    while(IsTradeContextBusy()){Sleep(100);} //Если торговый поток занят, ожидаем 
    RefreshRates(); //обновляем данные
    InstallSell=OrderSend(Pair,OP_SELL,NormalizeDouble(lot_s,2),bid,slip,sl,tp," = Sell = ",Identif,0); // Открываем Sell ордер 
    if (InstallSell<0){Alert("Функция OpenSell","\n","Валютная пара "+Pair,"\n", "Команда: открыть ордер Sell","\n", "Ответ сервера: " ,errors(GetLastError()) );} //если неудачно выводим сообщение   
   
 }
//===========================================================================================================   
//--- ОБРАБОТКА ОШИБОК ---
 string errors(int error){
     string error_string;
     switch(error){
         case 0:   error_string=" OK";                                      break;
         case 1:   error_string=" результат неизвестен";                    break;
         case 2:   error_string=" общая ошибка";                            break;
         case 3:   error_string=" неправильные параметры";                  break;
         case 4:   error_string=" торговый сервер занят";                   break;
         case 5:   error_string=" старая версия терминала";                 break;
         case 6:   error_string=" нет связи с торговым сервером";           break;
         case 7:   error_string=" недостаточно прав";                       break;
         case 8:   error_string=" слишком частые запросы";                  break;
         case 9:   error_string=" недопустимая операция";                   break;
         case 64:  error_string=" счет заблокирован";                       break;
         case 65:  error_string=" неправильный номер счета";                break;
         case 128: error_string=" время ожидания истекло";                  break;
         case 129: error_string=" неправильная цена";                       break;
         case 130: error_string=" неправильные стопы";                      break;
         case 131: error_string=" неправильный объем";                      break;
         case 132: error_string=" рынок закрыт";                            break;
         case 133: error_string=" торговля запрещена";                      break;
         case 134: error_string=" недостаточно средств";                    break;
         case 135: error_string=" цены изменились";                         break;
         case 136: error_string=" нет цен";                                 break;
         case 137: error_string=" брокер занят";                            break;
         case 138: error_string=" новые цены";                              break;
         case 139: error_string=" ордер обрабатывается";                    break;
         case 140: error_string=" разрешена только покупка";                break;
         case 141: error_string=" слишком много запросов";                  break;
         case 145: error_string=" ордер слишком близок к рынку";            break;
         case 146: error_string=" подсистема торговли занята";              break;
         case 147: error_string=" дата ордера запрещена брокером";          break;
         case 148: error_string=" превышение количества ордеров";           break;
         case 149: error_string=" хеджирование запрещено";                  break;
         case 150: error_string=" нарушено правило FIFO";                   break;
         default:  error_string=" команда не выполнена";                    break;
     }
     return (error_string);
     return("");
  }
//===========================================================================================================
int CountSell(){
 int count = 0;
  for(int a=OrdersTotal()-1; a>=0; a--){
    if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES)){
    if(OrderType() == 1)
    count++;
  }
}
return(count);
}
//+------------------------------------------------------------------+
int CountBuy(){
 int count = 0;
  for(int a=OrdersTotal()-1; a>=0; a--){
    if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES)){
    if(OrderType() == 0)
    count++;
  }
}
return(count);
}
Как и на чем заработать уже за первый месяц и делать это снова и снова
Регистрация и учебные материалы бесплатно.
Аватар пользователя
Николай
Модератор
 
Сообщений: 175
Зарегистрирован: 06 фев 2014, 22:31

Re: Торговая система Kuklovod.

Сообщение denis77515 » 02 июл 2014, 14:35

Николай Здраствуйте,я уже примерно так писал.Место занимает много.По этому я сделал через массив,открывается все через цикл.Вроде бы сегодня поправил,заработало.Посмотрю еще, может где еще косяки найдутся.Спасибо за уделенное время.
denis77515
Участник
 
Сообщений: 11
Зарегистрирован: 27 июн 2014, 04:29

помогите разобраться с кодом

Сообщение denis77515 » 11 дек 2014, 08:20

Ребята доброго времени всем,помогите разобраться с кодом. Я конечно далеко не спец в программировании и тут была попытка написать довольно сложный код для меня. Но система того стоит вот хотел ее автоматизировать. Советник мультивалютный,может открывать 3 корзины ордеров по 7 валютным парам в одной корзине. У меня проблема с тремя Функциями, не могу научить бота правильно закрывать ордера,и второе я так понимаю он должен знать цены аск и бид по всем парам в корзине чтоб работал без ошибок, третье не могу сооброзить как написать функцию для обработки ошибок закрытия,скажем нет связи или сервер занят и так далее. вот ссылка на правила этой системы и в архиве прикладываю код вместе с индикаторами. Заранее благодарен кто откликнется !
У вас нет доступа для просмотра вложений в этом сообщении.
denis77515
Участник
 
Сообщений: 11
Зарегистрирован: 27 июн 2014, 04:29

Пред.След.

Вернуться в Торговые стратегии

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron