+1
Код скрипта не смотрел.Если все устраивает, то сделайте сами по аналогии с советником.
avatar

ssg

  • 29 ноября 2021, 12:55
0
Пробуйте советник:

//+------------------------------------------------------------------+
//|                Copy информация о открытых позициях и ордерах.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                         Copy.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   PutButton("b",88,44,"BUY");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
//--- установим координаты кнопки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,3);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   string s="";

   if(ObjectGetInteger(0,"b",OBJPROP_STATE)==true)
     {
      int r=OrderSend(NULL,0,0.1,Ask,33,Bid-333*_Point,Bid+333*_Point,"",0,0,Green);
      ObjectSetInteger(0,"b",OBJPROP_STATE,false);
     }

   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
        // s+="\n "+OrderSymbol()+" "+string(OrderType())+" "+string(OrderOpenPrice())+" Stop Loss "+string(OrderStopLoss())+" Take Profit "+string(OrderStopLoss());
         s+="\n "+OrderSymbol()+" "+string(GetNameOP(OrderType()))+" "+string(OrderOpenPrice())+" Stop Loss "+string(OrderStopLoss())+" Take Profit "+string(OrderStopLoss());
        }
     }

   int h=FileOpen("Copy.txt",FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(h,s);
   FileClose(h);

   Comment(s);
  }

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование торговой операции                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - идентификатор торговой операции                                    |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
  switch (op) {
    case OP_BUY      : return("Buy");
    case OP_SELL     : return("Sell");
    case OP_BUYLIMIT : return("BuyLimit");
    case OP_SELLLIMIT: return("SellLimit");
    case OP_BUYSTOP  : return("BuyStop");
    case OP_SELLSTOP : return("SellStop");
    default          : return("Unknown Operation");
  }
}
//+------------------------------------------------------------------+
avatar

ssg

  • 29 ноября 2021, 12:51
0
0-бай
2-байлимит
4-байстоп
avatar

ssg

  • 29 ноября 2021, 12:34
0
Че

по китайски это фуфайка.
Как Т.З. «жуете» — то и получаете в результате.
Поэтому и
Если торгуем свечу Д1
avatar

ssg

  • 28 ноября 2021, 14:52
0
Если торгуем верха низа вчерашнего дня, то максимум сделок за период это 2. Одна в бай другая в селл. Если сработал ордер, то повторно не открывается, пока не появится следующий день. Если торгуем свечу Д1

Можно этот же текст, но на русском языке, а не на «птичьем»?
Если хотите выставлять отложенные ордера один раз за торговые сутки — пропишите в главной функции условие: выставлять ордера например в час ночи
<code>
if(CountTrades()<1 && Hour()==1){
</code>
avatar

ssg

  • 28 ноября 2021, 13:21
0
Посмотрите этот вариант cmillion.ru/partial-closing-position/
avatar

ssg

  • 27 ноября 2021, 16:42
0
Да дело не в обиде.Я с вами веду переписку потому что я за вас поручился (т.е. отказался от своего права на бесплатный код в этом месяце в вашу пользу) и несу за вас некоторую моральную ответственность перед коллективом.
Но вы сами должны что то реальное делать а не писать голые декларации или прятаться за мои посты.
Обращайтесь к Андрею, он пишет программы.
Просто сначала в блокноте попробуйте все расписать по пунктам с самого начала и для одной пары и для одного направления.Лучше с ценами.
Например:
Алгоритм направления бай (покупок)
1.В 00:30 каждых торговых суток если нет открытых позиций открывается позиция
на покупку лотом 0.1 (например по цене 1.30000.) и магиком =1.
2.В случае достижения прибыли Profit=10$ позиция закрывается.
3.В случае снижения цены на расстояние dist = 100 (например до цены 1.29900)
открывается позиция на продажу лотом 0.01 и магиком =1…
4.В случае дальнейшего снижения цены на расстояние dist = 100 (например до
цены 1.29800)открывается дополнительная позиция на продажу увеличенным
лотом 0.02 и магиком =1…
.
.
8.Таким образом образуется убыток позиции на покупку и прибыль позиций на
продажу.
9.В случае достижения суммарной прибыли Profit=10$ (т.е. превышения профита
позиций на продажу над убытком позиций на покупку на 10$ ) все позиции на
продажу и на покупку и магиком =1 закрываются.
10… И так по всем пунктам.
Постарайтесь максимально подробно но и не размазывания описать все пункты стратегии.Когда полностью опишете все пункты только тогда уже скопируете сюда.И только тогда будет надежда получить готовый советник.
avatar

ssg

  • 23 ноября 2021, 16:12
0
Отделите «мух от котлет». Корреляция это свойство показывающее «похожесть» двух или нескольких цифровых рядов (в данном случае это цена конкретной валютной пары в каждый дискретный момент времени).У «валют» не может быть динамики. «Валюта»-это товар на рынке Форекс.А «динамика»-это характеристика физического процесса.
Я понимаю, что вы перепечатываете чьи то посты.Но вы их хотя бы сами осмыслите.Надо же уважать тех у кого просите помощи.
А то ситуация похожа на отношения между Россией и Польшей:«Нам хреново-поэтому мы хотим, а вы обязаны продавать нам газ дешевле».
avatar

ssg

  • 23 ноября 2021, 10:26
0
Закрыться профитом нельзя. Профит-это число, а закрытие это действие.
А теперь тоже самое, только по пунктам, а не все в кучу, с примером в цифрах
по одной паре.Если будут скрины — будет еще лучше.
Здесь из вас никто клещами информацию тащить не будет.Советник по такой «стратегии» нужен вам.Так что будьте любезны сами писать грамотные посты и в ТЗ. максимально полно отражать свои пожелания.
Андрей здесь на небольшом окладе и он не телепат.Ему проще и выгоднее писать программы которые попроще с внятным ТЗ. чем выяснять детали наших сумбурных «хотелок».
avatar

ssg

  • 23 ноября 2021, 08:55
0
Андрей, заказчик наверное немного растерялся и не понял твоей реплики.
Суть его стратегии:
1.На нескольких валютных парах одновременно открываются позиции на покупку(свой магик=1) и продажу(свой магик=2).
2.По ходу торговли в положительной зоне по каждой паре через шаг происходит открытие дополнительных позиций с увеличенным лотом (пирамидинг).Все новые позиции имеют на покупку(свой магик=1) и продажу(свой магик=2).
4.Таким образом суммарный лот плюсовых позиций увеличивается, а у минусовых остается неизменным.
5.Закрытие всех позиций по всем парам происходит одновременно когда:
-суммарный профит всех пар и всех позиций на покупку (свой магик=1)
больше суммарного убытка всех пар и всех позиций на продажу (свой магик=2),
или:
-суммарный профит всех пар и всех позиций на продажу (свой магик=2)больше
суммарного убытка всех пар и всех позиций на покупку (свой магик=1):
Т.е. когда по советнику будет некоторая прибыль.
Тогда все позиции закрываются и начинается новый цикл.
Наверное проще сразу с открытием позиций выставлять несколько байстоп и селлстоп ордеров.У каждой пары свой шаг.
А при закрытии всех позиций по профиту не сработавшие ордера удалять.
По крайней мере я так понял.
avatar

ssg

  • 23 ноября 2021, 06:48
0
смотрите набросок и уточняйте что не так. потом уже мультик будет
avatar

ssg

  • 23 ноября 2021, 06:23
0
Страница какой книги?
avatar

ssg

  • 22 ноября 2021, 17:41
0
Где код советника?
avatar

ssg

  • 22 ноября 2021, 16:23
0
«Андрей, коли я заикнулся, то буду поручителем.
Интересует не сама стратегия, а очередной код мультивалютного советника на пятерке.»
avatar

ssg

  • 22 ноября 2021, 12:00
0
Андрей, коли я заикнулся, то буду поручителем.
Интересует не сама стратегия, а очередной код мультивалютного советника на пятерке.
avatar

ssg

  • 21 ноября 2021, 18:53
0
Переписал советник Андрея на четверке используя его же функции.Пробуйте.Хотя как и ожидалось слив и на пятерке и на четверке.Если тестировать на тиках или минутках.

//+------------------------------------------------------------------+
//|                                           Две сделки и долив.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mункцql5.com"
#property version   "1.00"
#property strict

input double Lots       = 0.1;  // лот
input double lots       = 0.01; 
input double Profit     = 10;   // профит
input int    StopLoss   = 0;    // стоплосс
input int    TakeProfit = 0;    // тейкпрофит

input int    Step       = 100;  // шаг
input int    Slip       = 100;  // проскальзывание

extern int Magic        = 123;      // магик
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double lot,double price)
  {
   int r=0;
   color clr=clrNONE;
   double sl=0,tp=0;
   datetime expiration=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }
   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,lot,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,expiration,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double FindLastBuyPrice(){
   int oticket,ticketNumber=0;
   double oprice=0;
   for(int i=OrdersTotal()-1;i>=0;i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderType()==OP_BUY)
           {
            oticket=OrderTicket();
            if(oticket>ticketNumber)
              {
               ticketNumber=oticket;
               oprice=OrderOpenPrice();
              }
           }
        }
     }
   return(oprice);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double FindLastSellPrice(){
   int oticket,ticketNumber=0;
   double oprice=0;
   for(int i=OrdersTotal()-1;i>=0;i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderType()==OP_SELL)
           {
            oticket=OrderTicket();
            if(oticket>ticketNumber)
              {
               ticketNumber=oticket;
               oprice=OrderOpenPrice();
              }
           }
        }
     }
   return(oprice);
  }
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit(int ot=-1){
   double pr=0;
   for(int i=OrdersTotal()-1;i>=0;i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1){
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int PositionsTotal(){
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(AllProfit()>Profit && Profit>0)CloseAll();
   
   if(PositionsTotal()<1)
     {
     PutOrder(0,Lots,Ask); 
     PutOrder(1,Lots,Bid);
     }
  
   if(PositionsTotal()>0)
     {
      if(Bid-FindLastBuyPrice()>Step*_Point) PutOrder(0,lots,Ask); 
      if(FindLastSellPrice()-Bid>Step*_Point) PutOrder(1,lots,Bid);
     }   
  Comment("\n Trades: ",PositionsTotal(),
           "\n Profit: ",AllProfit(),
           "\n Last Buy: ",FindLastBuyPrice(),
           "\n Last Sell: ",FindLastSellPrice());
  }
//+------------------------------------------------------------------+
avatar

ssg

  • 21 ноября 2021, 18:51
0
На момент остановки торговли это убыток.Вы собираетесь сидеть в просадке несколько лет? А хлебушек и картошку себе и детям на что покупать будете?
А мартингейл хорош в первую очередь при грамотной стратегии и во вторую очередь при бездонном депозите.А у вас сделки на обум открываются, куда «кривая» вывезет.
Но вы сильно не переживайте.Для вас форекс пока только игрушка.Через эти ошибки наверное все проходили.Жаль что не все на них учатся.
avatar

ssg

  • 21 ноября 2021, 17:49
0
Вы на самом деле считаете этот стиль торговли удачным.Судя по графикам в одном случае он принес прибыль 60$ а во втором убыток -350$. И это за год мучений!!!
Если докажете эффективность, то буду поручителем.
avatar

ssg

  • 21 ноября 2021, 12:33
+1
Поменяйте клавиатуру. У вас клавиши западают.
avatar

ssg

  • 18 ноября 2021, 12:44