0
достаточно трудоемкое задание
avatar

AM2

  • 5 сентября 2024, 10:45
+1
в нажатом белая, в отжатом такая :) 



www.opentraders.ru/downloads/3881/
avatar

AM2

  • 5 сентября 2024, 09:06
0
на 7-е
avatar

AM2

  • 5 сентября 2024, 06:29
0
на 6-е
avatar

AM2

  • 4 сентября 2024, 16:53
+1
набросал, хотя еще остались вопросы: www.opentraders.ru/downloads/3894/

avatar

AM2

  • 4 сентября 2024, 14:52
0
на 5-е
avatar

AM2

  • 4 сентября 2024, 14:12
0
из каких свечей состоит паттерн, куда ставим отложку, как можно поставить бай стоп ниже цены и др.?
avatar

AM2

  • 4 сентября 2024, 11:14
0
Перепроверьте пожалуйста, не перепутаны ли условия в части сигналов от MA Channels Fibo


помню делал как то, уровни в индикаторе прыгают туда сюда. меняется верх и низ
avatar

AM2

  • 3 сентября 2024, 15:01
0
шлите как обычно: логи скрины настройки
avatar

AM2

  • 3 сентября 2024, 14:00
0
У меня почему-то советник не открывает ордера ни в тестере, ни на демо на М1. Советник не видит в терминале PR, хотя он там есть.


оставил в сигнале только PR, открывает:

avatar

AM2

  • 3 сентября 2024, 11:52
+1
готово:


//+------------------------------------------------------------------+
//|                                                        Petro.mq5 |
//|                                             Copyright 2024, AM2. |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, AM2."
#property link      "http://www.forexsystems.biz"
#property version   "1.00"

#include <Trade\Trade.mqh>            // Подключаем торговый класс CTrade

//--- входные параметры группы 1
input double   Lot1      = 1;         // лот 1
input double   Lot2      = 0.5;       // лот 2
input double   Profit    = 11;        // Профит в валюте

input string   Symb1     = "EURUSD";  // 1-й символ
input string   Symb2     = "GBPUSD";  // 2-й символ

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

CTrade trade;                         // Используем торговый класс CTrade
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(string symb="")
  {
   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==symb || PositionGetString(POSITION_SYMBOL)==NULL)
           {
            trade.PositionClose(PositionGetTicket(i),Slip);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|  Position Profit                                                 |
//+------------------------------------------------------------------+
double AllProfit(string symb="")
  {
   double p=0;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==symb || PositionGetString(POSITION_SYMBOL)==NULL)
           {
            p+=PositionGetDouble(POSITION_PROFIT)+PositionGetDouble(POSITION_SWAP);
           }
        }
     }

   return(p);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(string symb)
  {
   int count=0;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==symb || PositionGetString(POSITION_SYMBOL)==NULL)
           {
            if(OrderGetInteger(ORDER_TYPE)<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double FindLastBuyPrice(string symb)
  {
   double pr=0;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)) && PositionGetInteger(POSITION_TYPE)==0)
        {
         if(PositionGetString(POSITION_SYMBOL)==symb)
           {
            pr=PositionGetDouble(POSITION_PRICE_OPEN);
            break;
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|  Position Profit                                                 |
//+------------------------------------------------------------------+
int PositionType(string symb)
  {
   int type=8;

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelectByTicket(PositionGetTicket(i)))
        {
         if(PositionGetString(POSITION_SYMBOL)==symb)
           {
            type=(int)PositionGetInteger(POSITION_TYPE);
            break;
           }
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trade(string symb)
  {
   double pr=0;
   double ask=SymbolInfoDouble(symb,SYMBOL_ASK);
   double bid=SymbolInfoDouble(symb,SYMBOL_BID);
   int dg=(int)SymbolInfoInteger(symb,SYMBOL_DIGITS);
   double pp=SymbolInfoDouble(symb,SYMBOL_POINT);

   if(CountTrades(Symb1)<1)
     {
      pr=NormalizeDouble(ask,dg);
      trade.Buy(Lot1,Symb1,pr,0,0,"");
     }

   if(CountTrades(Symb2)<1 && CountTrades(Symb1)>1)
     {
      pr=NormalizeDouble(ask,dg);
      trade.Sell(Lot1,Symb2,pr,0,0,"");
     }

   if(CountTrades(symb)>0 && CountTrades(symb)<2)
     {
      if(PositionType(symb)==0 && (FindLastBuyPrice(symb)-ask)/pp>=Step)
        {
         trade.Sell(Lot2,symb,bid,0,0);
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Symb1!="")
      Trade(Symb1);

   if(Symb2!="")
      Trade(Symb2);

   if(AllProfit(NULL)>Profit)
      CloseAll(NULL);

   if(AllProfit(Symb1)>Profit)
      CloseAll(Symb1);

   if(AllProfit(Symb2)>Profit)
      CloseAll(Symb2);
  }
//+------------------------------------------------------------------+



avatar

AM2

  • 2 сентября 2024, 10:14
0
Сейчас он выставляет только ордера бай, поэтому не идет.
Идет в минус, на расстоянии 20 пунктов открываем селл 0,5.


сделаю продажи сегодня, но так он еще хуже пойдет я думаю
avatar

AM2

  • 2 сентября 2024, 09:58