Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 350

 
Forexman77:

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

потом выходим когда время больше чем на входе со сдвигом на один период и цена ниже 3 дневной МА мин.

Код следующий:

Что подскажете?

Sell закрыт по Аску! Потому выше! Ask-Bid=spread;

Эту строку кода поправьте:

if  (Bid <= MA_2_t)

// на

if  (Ask <= MA_2_t)

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

 
Forexman77:


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

потом выходим когда время больше чем на входе со сдвигом на один период и цена ниже 3 дневной МА мин.

Код следующий:

Что подскажете?


Откройте завесу тайны если не сильно секретно, я о том что хорошо бы публиковать скриншоты где можно увидеть цены и таймфрейм. Может там пипсовка на М1 и сервер просто не успевает вовремя обработать приказ.


А вместо t=Time[0]; лучше OrderOpenTime() использовать.

 
evillive:

Откройте завесу тайны если не сильно секретно, я о том что хорошо бы публиковать скриншоты где можно увидеть цены и таймфрейм. Может там пипсовка на М1 и сервер просто не успевает вовремя обработать приказ.


А вместо t=Time[0]; лучше OrderOpenTime() использовать.

Эврика! Понял почему так.

signal > 0.006 почти всегда, поэтому все время обновляется t=Time[0]; и сделка не закрывается.

Вынес t=Time[0]; в блок где объявляется факт открытия сделки.

 

Всем привет! Скажите, как тестируемый советник ведет себя по отношению к гепам? Т.е. на тесте он показывает хорошую прибыль, а на демо уже два дня гепы все съедают :(.

 

Всем привет!

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

Советник будет торговать на bitcoin бирже, там возможны скачки цены +- 30% за день, поэтому стоплосс и тэйкпрофит в процентах от цены.

Протестировал на демо счете, вроде работает, но на реальный ставить боязно, минимальный лот около 7$, а центового счета у брокера нет.

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

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

Переменные:

#property copyright "me"
#property link      "killnosock.net"
extern int SlowEma = 21;
extern int FastEma = 10;
extern int MaxRisk = 100;// % депо которое будет использоваться для открытия ордера
extern int  TakeProfit=100;
extern int  StopLoss=100;
extern int Slippage = 10;

int LastBars = 0;

int init(){return(0);}
int deinit() {return(0);}

Эта функция определяет размер лота:

double GetLot(int Risk)
{double Free    =AccountFreeMargin();
 double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
 double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
 double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
 double Step    =MarketInfo(Symbol(),MODE_LOTSTEP);
 double Lot     =MathFloor(Free*Risk/100/One_Lot/Step)*Step;
 if(Lot<Min_Lot) Lot=Min_Lot;
 if(Lot>Max_Lot) Lot=Max_Lot;
 if(Lot*One_Lot>Free) {
 Alert(" free= ", AccountFreeMargin()," for one lot= ", MarketInfo(Symbol(),MODE_MARGINREQUIRED)," lot= ", Lot);
 return(0.0);}
return(Lot);}

Здесь открываем ордер:

int NewOrder(int Cmd,double Lot)
{double TP=0; //takeprofit
 double SL=0; //stoploss
 double PR=0; //price
 color clr = CLR_NONE;
 while(!IsTradeAllowed()) Sleep(10);
 RefreshRates();
 if(Cmd==OP_BUY)
   {PR=Ask;
    if(TakeProfit>0) TP=Ask + Ask*TakeProfit/100;
    if(StopLoss>0) SL=Ask - Ask*StopLoss/100;
    if(SL<0) SL = 0;
    if(TP<0) TP = 0;
    clr = Green;}
 if(Cmd==OP_SELL)
   {PR=Bid;
    if(TakeProfit>0) TP=Bid - Bid*TakeProfit/100;
    if(StopLoss>0) SL=Bid + Bid*StopLoss/100;
    if(SL<0) SL = 0;
    if(TP<0) TP = 0;
    clr = Red;}
 int tic=OrderSend(Symbol(),Cmd,Lot,PR,Slippage,SL,TP,"",0,0,clr);
 if(tic<0) Print("Open order error: ",GetLastError());
return(tic);}

Здесь закрываем 1 или все ордера

//CloseOrder
void CloseOrder()
{double PR=0;
 while(!IsTradeAllowed()) Sleep(10);
 RefreshRates();
 if(OrderType()==OP_BUY)  PR=Bid;
 if(OrderType()==OP_SELL) PR=Ask;
 if(!OrderClose(OrderTicket(),OrderLots(),PR,Slippage,CLR_NONE))
   Print("Order close error: ",GetLastError());
return;}

//Close all Orders
void CloseAllOrders()
{
  for(int i=OrdersTotal()-1;i>=0;i--)
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {
      CloseOrder();
     }
return;}

Эта функция считает разность двух EMA

double EmaDiff(int shift)
   {
      double difference;
      difference = iMA(Symbol(),0,FastEma,0,MODE_EMA,PRICE_CLOSE,shift)
                 - iMA(Symbol(),0,SlowEma,0,MODE_EMA,PRICE_CLOSE,shift);
      return(difference);
   }

Ну и вот само тело программы

int start()
  {
double Lot;
    // действуем, когда открывается новая свечка
    if (LastBars == Bars) return(0);
    else LastBars = Bars;
      {         
         if ((EmaDiff(1) > 0) && (EmaDiff(2) < 0))
            {
               CloseAllOrders();
               Lot = GetLot(MaxRisk);
               NewOrder(OP_BUY,Lot);
            }
            
         if ((EmaDiff(2) > 0) && (EmaDiff(1) < 0))
            {
               CloseAllOrders();
               Lot = GetLot(MaxRisk);
               NewOrder(OP_SELL,Lot);
            }                    
      }
   return(0);
  }
 

Уважаемые господа всем привет!!!

Вопрос такой помогите разобраться в сделках!!! Есть Сет со сделками скачал я с сайта одного где был конкурс там чувак с 10000 баксов за месяц или за неделю не помню сделал 300000 тыс баксов!!! Как мне распознать где он закрыл сделку!!! Время открытие цена лот валют пара все есть!!

.........................................................................................................................................................................................................................................


СДЕЛОК ОЧЕНЬ МНОГО ВСЕ НЕВЛЕЗДЛ


Результаты выведены по состоянию на 2013-08-29 14:02:05(EET)


СДЕЛКА ВРЕМЯ ТИП ЛОТЫ СИМВОЛ ЦЕНА СВОП ПРИБЫЛЬ

272984 2013-08-05 07:58:50 SELL 1.00 EURAUD 1.49556 0 0

272986 2013-08-05 07:58:56 SELL 1.00 EURAUD 1.49553 0 0

272988 2013-08-05 07:59:03 SELL 1.00 EURAUD 1.49549 0 0

272999 2013-08-05 07:59:57 SELL 1.00 EURAUD 1.49534 0 0

273002 2013-08-05 08:00:02 SELL 1.00 EURAUD 1.4954 0 0

273004 2013-08-05 08:00:07 SELL 1.00 EURAUD 1.4954 0 0

284429 2013-08-05 16:47:27 BUY 1.00 EURAUD 1.48839 0 628.85

284432 2013-08-05 16:47:33 BUY 1.00 EURAUD 1.48838 0 629.71

284433 2013-08-05 16:47:37 BUY 1.00 EURAUD 1.48843 0 625.28

284435 2013-08-05 16:47:43 BUY 1.00 EURAUD 1.48857 0 612.81

284439 2013-08-05 16:47:47 BUY 1.00 EURAUD 1.48854 0 615.46

284442 2013-08-05 16:47:50 BUY 1.00 EURAUD 1.48859 0 611.01

284443 2013-08-05 16:47:51 BUY 1.00 EURAUD 1.48859 0 0

284447 2013-08-05 16:48:01 BUY 1.00 AUDUSD 0.89056 0 0

284449 2013-08-05 16:48:09 SELL 1.00 EURAUD 1.48735 0 -110.44

284451 2013-08-05 16:48:21 BUY 1.00 AUDUSD 0.89061 0 0

284454 2013-08-05 16:48:25 BUY 1.00 AUDUSD 0.8906 0 0

284458 2013-08-05 16:48:30 BUY 1.00 AUDUSD 0.89058 0 0

284461 2013-08-05 16:48:34 BUY 1.00 AUDUSD 0.89051 0 0

284465 2013-08-05 16:48:39 BUY 1.00 AUDUSD 0.89052 0 0

284469 2013-08-05 16:48:43 BUY 1.00 AUDUSD 0.89053 0 0

284472 2013-08-05 16:48:47 BUY 1.00 AUDUSD 0.89051 0 0

284475 2013-08-05 16:48:51 BUY 1.00 AUDUSD 0.89056 0 0

284479 2013-08-05 16:48:55 BUY 1.00 AUDUSD 0.89056 0 0

284483 2013-08-05 16:48:59 BUY 1.00 AUDUSD 0.89056 0 0

284487 2013-08-05 16:49:03 BUY 1.00 AUDUSD 0.89058 0 0

284491 2013-08-05 16:49:08 BUY 1.00 AUDUSD 0.89053 0 0

284492 2013-08-05 16:49:12 BUY 1.00 AUDUSD 0.89053 0 0

286130 2013-08-05 16:51:55 BUY STOP 1.00 AUDUSD 0.8915 0 0

288418 2013-08-05 16:52:05 BUY STOP 1.00 AUDUSD 0.89255 0 0

293964 2013-08-05 16:52:14 BUY STOP 1.00 AUDUSD 0.8935 0 0

299297 2013-08-05 16:52:26 BUY STOP 1.00 AUDUSD 0.89459 0 0

299482 2013-08-05 16:52:35 BUY STOP 1.00 AUDUSD 0.89553 0 0

299533 2013-08-05 16:52:53 BUY STOP 1.00 AUDUSD 0.89655 0 0

299595 2013-08-05 16:53:02 BUY STOP 1.00 AUDUSD 0.89703 0 0

300040 2013-08-05 16:53:36 BUY STOP 1.00 AUDUSD 0.89751 0 0

300096 2013-08-05 16:53:46 BUY STOP 1.00 AUDUSD 0.898 0 0

300151 2013-08-06 07:54:49 SELL 1.00 AUDUSD 0.89756 4.36 519.04

300153 2013-08-06 07:54:53 SELL 1.00 AUDUSD 0.89749 4.36 512.04

300154 2013-08-06 07:54:58 SELL 1.00 AUDUSD 0.89743 4.36 506.04

300156 2013-08-06 07:55:01 SELL 1.00 AUDUSD 0.89738 4.36 501.04

300158 2013-08-06 07:55:05 SELL 1.00 AUDUSD 0.89736 4.36 499.04

300160 2013-08-06 07:55:11 SELL 1.00 AUDUSD 0.89772 4.36 535.04

300161 2013-08-06 07:55:15 SELL 1.00 AUDUSD 0.89771 4.36 534.04

300163 2013-08-06 07:55:19 SELL 1.00 AUDUSD 0.89765 4.36 528.04

300167 2013-08-06 07:55:36 SELL 1.00 AUDUSD 0.89733 4.36 496.04

300169 2013-08-06 07:55:40 SELL 1.00 AUDUSD 0.89733 4.36 496.04

300171 2013-08-06 07:55:44 SELL 1.00 AUDUSD 0.89735 4.36 498.04

300173 2013-08-06 07:55:49 SELL 1.00 AUDUSD 0.89732 4.36 495.04

300178 2013-08-06 07:55:52 SELL 1.00 AUDUSD 0.89725 4.36 488.04

300181 2013-08-06 07:55:56 SELL 1.00 AUDUSD 0.89714 4.36 477.04

 
FEAR:

Уважаемые господа всем привет!!!

Вопрос такой помогите разобраться в сделках!!! Есть Сет со сделками скачал я с сайта одного где был конкурс там чувак с 10000 баксов за месяц или за неделю не помню сделал 300000 тыс баксов!!! Как мне распознать где он закрыл сделку!!! Время открытие цена лот валют пара все есть!!

.........................................................................................................................................................................................................................................

СДЕЛОК ОЧЕНЬ МНОГО ВСЕ НЕВЛЕЗДЛ

А никак, специально не указывают время м цену закрытия, халявы нет )))
 
evillive:
А никак, специально не указывают время м цену закрытия, халявы нет )))


Я ВСЕ ПОНИМАЮ НО ЕСТЬ ВЕДЬ ЛОТ И ЦЕНА И ПОКУПКА ИЛИ ПРОДАЖА К ПРИМЕРУ:


284429 2013-08-05 16:47:27 BUY 1.00 EURAUD 1.48839 0 628.85

ЦЕНА 1.48839 ВАЛЮТ ПАРА -EURAUD, ЛОТ 1 БРОКЕР 5 ЗНАК!!! ПРИБЫЛЬ 628 ТО ЕСТЬ ЦЕНА ПРОШЛА 628 ПУНКТОВ ВВЕРХ!! ПРИ ЛОТЕ 1!! кАРОЧЕ ЕСЛИ НЕ СЛОЖНО ПОСМОТРИ В ИСТОРИИ Я ТАК И НЕПОНЯЛ ЧЕСТНО ВРЕМЯ ПОЧТИ 17:00 НО ЦЕНА ТО ГОРАЗДО НИЖЕ ЭТОЙ 1.48839!!! ДАЖЕ ЕСЛИ ЭТА ЦЕНА ЗАКРЫТИЯ ТО Я НАСЧИТАЛ 7000 ПУНКТОВ Я ВООБЩЕ НЕ ПОНЯЛ КАК ТАК

 
FEAR:


Я ВСЕ ПОНИМАЮ НО ЕСТЬ ВЕДЬ ЛОТ И ЦЕНА И ПОКУПКА ИЛИ ПРОДАЖА К ПРИМЕРУ:


284429 2013-08-05 16:47:27 BUY 1.00 EURAUD 1.48839 0 628.85

ЦЕНА 1.48839 ВАЛЮТ ПАРА -EURAUD, ЛОТ 1 БРОКЕР 5 ЗНАК!!! ПРИБЫЛЬ 628 ТО ЕСТЬ ЦЕНА ПРОШЛА 628 ПУНКТОВ ВВЕРХ!! ПРИ ЛОТЕ 1!! кАРОЧЕ ЕСЛИ НЕ СЛОЖНО ПОСМОТРИ В ИСТОРИИ Я ТАК И НЕПОНЯЛ ЧЕСТНО ВРЕМЯ ПОЧТИ 17:00 НО ЦЕНА ТО ГОРАЗДО НИЖЕ ЭТОЙ 1.48839!!! ДАЖЕ ЕСЛИ ЭТА ЦЕНА ЗАКРЫТИЯ ТО Я НАСЧИТАЛ 7000 ПУНКТОВ Я ВООБЩЕ НЕ ПОНЯЛ КАК ТАК


Где ты там насчитал 7000 пунктов??? Там цена открытия, но даже если бы это была цена закрытия, то одной цены недостаточно чтобы что-то там насчитать, всё равно нужны обе. По-моему это просто подделка, если только конкурс не продлился до 18 деакбря, когда эта позиция могла быть закрыта с 630 пунктов прибыли. Но до этого он был бы вынужден пересидеть просадочку около -830 пунктов (для 4-зн), не очень-то и умно, стратегия такая - унылое гуано...


На реале его слили бы давно, это на демо конкурсе такое прокатывает, когда виртуального бабла навалом )))

 

evillive, доброго времени суток, спасибо вам за то, что указали мне направление для развития!!!



r772ra, здравствуйте, благодарю за объяснение ошибки экспонируя исправленный код (считаю это лучшим способом обучения (практика (-Суха теория, мой друг, а древо жизни вечно зеленеет.-))).

Причина обращения: