Перейти к содержимому

Theme© by Fisana
 

XTrade

Актуальное

Спроси у профи

Заказ советников и роботов

Опытные программисты реализуют ваши идеи в сжатые сроки и по приятной цене, от 10$. Отзывы и подробности

Также на форуме есть тема "Бесплатное написание скриптов", но заказы выполняются редко.

Обучение трейдингу

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



Информер

<a href="http://www.mt5.com/ru/">Форекс портал</a>


Фотография
  • Авторизуйтесь для ответа в теме
Сообщений в теме: 18034

#1449 OFFLINE   Wizard

Wizard

    Пользователи

  • Свой человек
  • PipPipPipPipPipPipPipPipPip
  • 337 сообщений
  • Баланс: 0$
  • Пол:Мужчина
  • Город:Киев

Отправлено 01 Апрель 2010 - 12:57

Все кто имеет желание потрудится на благо отечества - бесплатно, принимаем заказы в этой теме!!! Незабываем благодарить тех кто трудится для Вас!!! :rolleyes:

 

 

 

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

Всего 3 шага и ваш заказ будет выполнен:
1. Оплатите заказ через форму, представленную ниже (Яндекс деньги, WebMoney);
2. Отправьте задание программисту на почту (почта будет предоставлена после оплаты автоматически);
3. В течении 5 рабочих дней получите готовый советник или индикатор на свой e-mail.

Стоимость заказа 590 рублей или 9,9 usd.

Экономьте свое время, оно стоит дороже денег!

Форма для оплаты:

 

 



 
 

#3481 OFFLINE   Necron

Necron

    Пошёл в рукопашку

  • Специалист
  • PipPipPipPipPipPipPipPipPipPipPip
  • 683 сообщений
  • Баланс: 0$
  • Пол:Мужчина

Отправлено 18 Март 2011 - 23:56

Мои приветствия.
Народ, а почему я не могу создать тему?
:blink:


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

#3482 OFFLINE   Alen_T

Alen_T

    Есть ещё порох в пороховницах

  • Специалист
  • PipPipPipPipPipPipPipPipPipPipPipPip
  • 874 сообщений
  • Баланс: 0$
  • Пол:Мужчина

Отправлено 19 Март 2011 - 00:03

Спасибо, с этой проблемой я уже разобрался, там на самом деле была затыка в -Corridor это числовое значение, оно должно быть в пунктах и я просто промограл, сейчас поправил.. Теперь новая проблемка. что то с lasttime. На этот раз я выложил другой кусок кода, но и на старый проблема тоже распространяется. По идее lasttime должен запоминать время открытия последнего ордера, чтобы брать информацию только из последнего открытого ордера. Но видимо я что-то не то сделал..


Сделай функцию определения времени открытия последнего ордера ( например TimeLastOpen()) и вставь вместо int LastTime; - > int LastTime = TimeLastOpen(); те Присвой это время (а не НОЛЬ) переменной lasttime.
А далее посмотри http://fxgeneral.com...topic=1443&st=0 - описан порядок просмотра ордеров.
Ты это, заходи, если что...(С)

#3483 OFFLINE   Batmannk

Batmannk

    Расстрелял целый магазин

  • Пользователи
  • PipPipPipPip
  • 54 сообщений
  • Баланс: 0$
  • Пол:Мужчина
  • Город:Москва

Отправлено 19 Март 2011 - 00:24

Сделай функцию определения времени открытия последнего ордера ( например TimeLastOpen()) и вставь вместо int LastTime; - > int LastTime = TimeLastOpen(); те Присвой это время (а не НОЛЬ) переменной lasttime. и тд.
В последнем тексте int LastTime при переборе ордеров всегда равно OrderOpenTime() выбранного ордера


Немного не понял, ты имел ввиду сначала написать функцию определяющую последнее время открытия по истории типа такого
double TimeLastOpen(){
int TimeLastOpen;
for (int i=0; i<OrdersHistoryTotal(); i++) {
if (TimeLastOpen<OrderOpenTime()) TimeLastOpen=OrderOpenTime();}
return (TimeLastOpen); }
А потом приравнять к этому значению LastTime?
На самом деле либо я неправильно понял, либо затея сомнительна.. Я конечно попробовал но результат 0

#3484 OFFLINE   Alen_T

Alen_T

    Есть ещё порох в пороховницах

  • Специалист
  • PipPipPipPipPipPipPipPipPipPipPipPip
  • 874 сообщений
  • Баланс: 0$
  • Пол:Мужчина

Отправлено 19 Март 2011 - 00:37

Ребят, помогите пожалуйста, объясните где ошибка, почему этот кусок не работает?


double NextLots() {
int LastTime;
double NLot;
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS)) {
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if (LastTime < OrderOpenTime()) {
LastTime = OrderOpenTime();
NLot = OrderLots() * 2;
return (NLot);
}
}
}
}
}


Он почему то умножает лот первой сделки, а не последней..

Потому что любая сделка (1-я поданная на проверку будет подходить условию if (LastTime < OrderOpenTime(). тк LastTime при инициализации (int LastTime;) равна нулю.
Ты это, заходи, если что...(С)

#3485 OFFLINE   dennski

dennski

    Первый выстрел

  • Пользователи
  • PipPip
  • 3 сообщений
  • Баланс: 0$

Отправлено 19 Март 2011 - 00:40

1. Пара чего?
2. Отображаемые уровни от чего, в чем (%, пипсы, попугаи...)?
3. Окно оcновное (цены) или в отдельном окне? Разность - величина значительно меньшая, чем значение стохастиков - значит будет ниже (и значительно) или (если отрицательная - то где?).
т.е. разность можно изобразить только на отдельном окне. Вот.:scratch_head:

Попробую еще раз:


Мы имеем два финансовых инструмента , к примеру EUR/USD и GBP/USD и соответственно два стохастика; нужно чтобы эти два стохастика отображались в одном окне;

Разность - abs( stoch(eur/usd) - stoch(gbp/usd)) ,

Как только эта разность больше 80, то звуковой сигнал.






#3486 OFFLINE   Batmannk

Batmannk

    Расстрелял целый магазин

  • Пользователи
  • PipPipPipPip
  • 54 сообщений
  • Баланс: 0$
  • Пол:Мужчина
  • Город:Москва

Отправлено 19 Март 2011 - 00:42

Потому что любая сделка (1-я поданная на проверку будет подходить условию if (LastTime < OrderOpenTime(). тк LastTime при инициализации (int LastTime;) равна нулю.


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

#3487 OFFLINE   Alen_T

Alen_T

    Есть ещё порох в пороховницах

  • Специалист
  • PipPipPipPipPipPipPipPipPipPipPipPip
  • 874 сообщений
  • Баланс: 0$
  • Пол:Мужчина

Отправлено 19 Март 2011 - 01:02

Попробую еще раз:


Мы имеем два финансовых инструмента , к примеру EUR/USD и GBP/USD и соответственно два стохастика; нужно чтобы эти два стохастика отображались в одном окне;

Разность - abs( stoch(eur/usd) - stoch(gbp/usd)) ,

Как только эта разность больше 80, то звуковой сигнал.

Все понятно и доходчиво объяснил. Но не совсем.
Т.е. направление неважно? А разницу рисовать не надо?
Ты это, заходи, если что...(С)

#3488 OFFLINE   Alen_T

Alen_T

    Есть ещё порох в пороховницах

  • Специалист
  • PipPipPipPipPipPipPipPipPipPipPipPip
  • 874 сообщений
  • Баланс: 0$
  • Пол:Мужчина

Отправлено 19 Март 2011 - 01:16

Отбой. Goog night!
Ты это, заходи, если что...(С)

#3489 OFFLINE   Michelangelo®

Michelangelo®

    МОРДЕ-РАПТОР

  • Профи
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1 003 сообщений
  • Баланс: 0$
  • Пол:Мужчина
  • Город:ЗаМКАДыш

Отправлено 19 Март 2011 - 14:32

Ребят, помогите пожалуйста, объясните где ошибка, почему этот кусок не работает?


double NextLots() {
int LastTime;
double NLot;
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS)) {
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if (LastTime < OrderOpenTime()) {
LastTime = OrderOpenTime();
NLot = OrderLots() * 2;
return (NLot);
}
}
}
}
}


Он почему то умножает лот первой сделки, а не последней..

вынеси return(NLot); за цикл... :)
Изображение
Возможно все! ...что ниже скорости света!
Невозможное делаю сразу! Чудо требует незначительной подготовки...
Пришел, увидел, нафлудил...

Изображение

#3490 OFFLINE   Batmannk

Batmannk

    Расстрелял целый магазин

  • Пользователи
  • PipPipPipPip
  • 54 сообщений
  • Баланс: 0$
  • Пол:Мужчина
  • Город:Москва

Отправлено 19 Март 2011 - 15:24

Michelangelo, спасибо огромное!! Блин вот так всегда, тупая мелкая ошибка, и начинаешь думать что код неправильный вообще))
Можешь еще помочь с той же самой ошибкой, только в другом куске, уже торговом?

if (OrdersTotal()>1 && OrdersTotal()<Max_orders) {
for (int a=0; a<OrdersTotal(); a++) {
if (OrderSelect(a, SELECT_BY_POS)) {
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
if (LastTime < OrderOpenTime()) {
LastTime = OrderOpenTime();
if (OrderProfit()==-Corridor*OrderLots()*10) {
if(OrderType()==OP_BUY)
OrderSend(Symbol(), OP_SELL, NextLots(), Bid, Slippage, Bid + (2*Corridor)*Point, Bid - Corridor * Point, NameExpert, Magic, 0, colorOpenSell);
if(OrderType()==OP_SELL)
OrderSend(Symbol(), OP_BUY, NextLots(), Ask, Slippage, Ask - (2*Corridor)*Point, Ask + Corridor * Point, NameExpert, Magic, 0, colorOpenBuy);
}
}
}
}
}
}


Тоже самое, берет тип сделки не из последней сделки, а из первой.. Тут return-а нет, и я хз просто как сделать..


P.S все в общем, разобрался, вынес эту надоевшую LastTime в отдельную bool функцию, теперь все работает)

#3491 OFFLINE   Michelangelo®

Michelangelo®

    МОРДЕ-РАПТОР

  • Профи
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1 003 сообщений
  • Баланс: 0$
  • Пол:Мужчина
  • Город:ЗаМКАДыш

Отправлено 19 Март 2011 - 17:10

Michelangelo, спасибо огромное!! Блин вот так всегда, тупая мелкая ошибка, и начинаешь думать что код неправильный вообще))
Можешь еще помочь с той же самой ошибкой, только в другом куске, уже торговом?

if (OrdersTotal()>1 && OrdersTotal()<Max_orders) {
for (int a=0; a<OrdersTotal(); a++) {
if (OrderSelect(a, SELECT_BY_POS)) {
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
if (LastTime < OrderOpenTime()) {
LastTime = OrderOpenTime();
if (OrderProfit()==-Corridor*OrderLots()*10) {
if(OrderType()==OP_BUY)
OrderSend(Symbol(), OP_SELL, NextLots(), Bid, Slippage, Bid + (2*Corridor)*Point, Bid - Corridor * Point, NameExpert, Magic, 0, colorOpenSell);
if(OrderType()==OP_SELL)
OrderSend(Symbol(), OP_BUY, NextLots(), Ask, Slippage, Ask - (2*Corridor)*Point, Ask + Corridor * Point, NameExpert, Magic, 0, colorOpenBuy);
}
}
}
}
}
}


Тоже самое, берет тип сделки не из последней сделки, а из первой.. Тут return-а нет, и я хз просто как сделать..


P.S все в общем, разобрался, вынес эту надоевшую LastTime в отдельную bool функцию, теперь все работает)

сделай так...

int ticket=-1;
if (OrdersTotal()>1 && OrdersTotal()<Max_orders) {
   for (int a=0; a<OrdersTotal(); a++) {
      if (OrderSelect(a, SELECT_BY_POS)) {
 		if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
            if (LastTime < OrderOpenTime()) {
       		LastTime = OrderOpenTime();
       		ticket=OrderTicket();
            }
 		}
      }
   }
}
if(OrderSelect(ticket,SELECT_BY_TICKET)){   
   if (OrderProfit()==-Corridor*OrderLots()*10) {
      if(OrderType()==OP_BUY) OrderSend(Symbol(), OP_SELL, NextLots(), Bid, Slippage, Bid + (2*Corridor)*Point, Bid - Corridor * Point, NameExpert, Magic, 0, colorOpenSell); 
      if(OrderType()==OP_SELL) OrderSend(Symbol(), OP_BUY, NextLots(), Ask, Slippage, Ask - (2*Corridor)*Point, Ask + Corridor * Point, NameExpert, Magic, 0, colorOpenBuy); 
   }
}


т.е. ты вводишь переменную ticket и находишь самый последний ордер... цикл закончен - результат номер последнего ордера...
затем (вне цикла) ты выбираешь этот ордер и работаешь с его параметрами...

и еще - будут ошибки при работе на реале... необходимо нормализовать цены и стопы функцией Normalisedouble
Изображение
Возможно все! ...что ниже скорости света!
Невозможное делаю сразу! Чудо требует незначительной подготовки...
Пришел, увидел, нафлудил...

Изображение

#3492 OFFLINE   KRANOVSCHIK

KRANOVSCHIK

    Расстрелял целый магазин

  • Пользователи
  • PipPipPipPip
  • 43 сообщений
  • Баланс: 0.3$

Отправлено 19 Март 2011 - 21:56

Облегчу немного работу Уважаемому , вот советник по индикаторам Sniper но, без Megatrenda.
Извините, сам не проверял.

Спасибо за помощь :beer2: Ночку погуглил и версия 3.11 на компе . Там есть ex4. файлы , думаю посвежей .



#3493 OFFLINE   Leonix

Leonix

    Выпустил первую очередь

  • Пользователи
  • PipPipPip
  • 22 сообщений
  • Баланс: 0$

Отправлено 19 Март 2011 - 21:57

Доброго времени суток! Уважаемые программисты помогите прикрепить к этому советнику:

1. Трейлинг стоп с заданным шагом

2. Время торговли

3. Магик

3. Манименеджмент (использование в открытых сделках не более % от капитала). true/false

Прикрепленные файлы



#3494 OFFLINE   Destr

Destr

    Первый выстрел

  • Частый гость
  • PipPip
  • 7 сообщений
  • Баланс: 0$

Отправлено 20 Март 2011 - 01:41

Доброго времени суток! Уважаемые программисты помогите прикрепить к этому советнику:

1. Трейлинг стоп с заданным шагом

2. Время торговли

3. Магик

3. Манименеджмент (использование в открытых сделках не более % от капитала). true/false




помогите мне.мой пост 3438!

#3495 OFFLINE   Batmannk

Batmannk

    Расстрелял целый магазин

  • Пользователи
  • PipPipPipPip
  • 54 сообщений
  • Баланс: 0$
  • Пол:Мужчина
  • Город:Москва

Отправлено 20 Март 2011 - 02:17

Michelangelo, еще раз спасибо. Но я же там в P.S. написал, что решил уже проблему) Но с тем же советником возникла опять трабла, ну не хватает моих знаний.. В общем захотелось мне сделать закрытие всех позиций при достижении определенной прибыли. Моего мозга хватило только вот на это

if (ExistPositions()) {
   if (AccountProfit()>=Corridor*Lot()*10) {
       bool   result;
         double price;
         int    error;
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
     {
         while(ExistPositions())
           {
            if(OrderType()==OP_BUY) price=Bid;
            else            price=Ask;
            result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
            if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
           else error=0;
            if(error==135) RefreshRates();
            else break;
           }
        }
     
   else Print( "Error when order select ", GetLastError());
}
return(0);}

Но в итоге почему то если 1 ордер, то он правильно закрывает, а если больше, то там совсем другая прибыль получается.. Какие есть альтернативы вот этой строчке if (AccountProfit()>=Corridor*Lot()*10) ?

Ну а NormalizeDouble потом введу, если результаты нормальными окажутся..



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей

Copyright © 2016 Your Company Name