Convert Single Symbol function to Multi Symbol

仕事が完了した

実行時間20 分
依頼者からのフィードバック
Highly recommended, Work delivered very fast and with 100% satisfaction,

指定

ON an EA (not for trading but only for reading buffers) which has a function SearchZigZagExtremums

I want this function to be converted into multi symbols  multi period

below is my attempt to modify the free program which is available in mql codebase

//+------------------------------------------------------------------+
//|                           ZigZag EA(barabashkakvn's edition).mq5 |
//|                                   Copyright © 2009, Tokman Yuriy |
//|                                            yuriytokman@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Tokman Yuriy"
#property link      "yuriytokman@gmail.com"
#property version   "1.002"

//--- input parameters
input string      ____1___          = "Настройки индикатора ZigZag";
input int         ExtDepth          = 12;             // Depth
input int         ExtDeviation      = 5;              // Deviation
input int         ExtBackstep       = 3;              // Backstep
//---
//---
int            handle_iCustom;               // variable for storing the handle of the iCustom indicator
#define RESET 0
int min_rates_total;
int symbolCount;
string symbolsList[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit() {
//---
   min_rates_total=100;
//--- indicator buffers mapping
   symbolCount=SymbolsTotal(true);
   if( ArrayResize(symbolsList, symbolCount) < symbolCount ) return (INIT_FAILED);

//--- create handle of the indicator iCustom
   for(int i=0; i<symbolCount; i++) {
      symbolsList[i] = SymbolName(i,true);
      handle_iCustom=iCustom(symbolsList[i],Period(),"Examples\\ZigZag");
//--- if the handle is not created
      if(handle_iCustom==INVALID_HANDLE) {
         //--- tell about the failure and output the error code
         PrintFormat("Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d",
                     symbolsList[i],
                     EnumToString(Period()),
                     GetLastError());

         //--- the indicator is stopped early
         return(INIT_FAILED);
      }
   }

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

}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick() {
//---

//---
for(int j=0; j<symbolCount; j++) {
      symbolsList[j] = SymbolName(j,true);
      
   double array_results[];
 
      if(!SearchZigZagExtremums(4,array_results))
         return;
         
      double high=0.0,low=0.0;
      double room_0 = array_results[0]; // index 0
      double room_1 = array_results[1]; // index 1
      double room_2 = array_results[2]; // index 2
      double room_3 = array_results[3]; // index 3

//--- находим верх и низ
      if(room_1>room_2) {
         high=room_1;
         low=room_2;
      } else {
         high=room_2;
         low=room_1;
      }
     
      Print(symbolsList[j], array_results[0]);
      Sleep(1000);
      }
      


//---

   }

//+------------------------------------------------------------------+
//| Search for indicator extremums                                   |
//+------------------------------------------------------------------+
   bool SearchZigZagExtremums(const int count,double &array_results[]) {
      if(!ArrayIsDynamic(array_results)) {
         Print("This a no dynamic array!");
         return(false);
      }
      ArrayFree(array_results);
      ArrayResize(array_results,count);
      ArraySetAsSeries(array_results,true);
      int      buffer_num=0;           // indicator buffer number
      double   arr_buffer[];
      ArraySetAsSeries(arr_buffer,true);
//--- reset error code
      ResetLastError();
//--- fill a part of the iCustom array with values from the indicator buffer
      int copied=CopyBuffer(handle_iCustom,buffer_num,0,100,arr_buffer);
      if(copied<0) {
         //--- if the copying fails, tell the error code
         PrintFormat("Failed to copy data from the iCustom indicator, error code %d",GetLastError());
         //--- quit with zero result - it means that the indicator is considered as not calculated
         return(false);
      }
      int elements=0;
      for(int i=0; i<copied; i++) {
         if(arr_buffer[i]!=0) {
            array_results[elements]=arr_buffer[i];
            elements++;
            if(elements==count)
               break;
         }
      }
      if(elements==count)
         return(true);
//---
      return(false);
   }


Goal : I want this program to be modified so it can read buffers 

      double room_0 = array_results[0]; // index 0
      double room_1 = array_results[1]; // index 1
      double room_2 = array_results[2]; // index 2
      double room_3 = array_results[3]; // index 3

for each symbol existed in marketwatch and when i print

Print(symbolsList[j], array_results[0]);

I get results like

Symbol_1 buffer_for_Symbol_1 for PERIOD_1

Symbol_2 buffer_for_Symbol_2 for PERIOD_2

like this

応答済み

1
開発者 1
評価
(361)
プロジェクト
643
26%
仲裁
92
72% / 14%
期限切れ
12
2%
仕事中
パブリッシュした人: 1 code
2
開発者 2
評価
(38)
プロジェクト
50
10%
仲裁
1
0% / 0%
期限切れ
8
16%
類似した注文
I have been trading manually for years by disciplining myself to follow a rigorous risk management system and using entry and exit strategies crafted from Implied Volatility(IV), Real Volume ,RSI and Moving Average ,but never had I automated the entire system until now . I have just completed the automation of the gold Expert Advisor and the results are astonishing .Below you'll see the graph and a statistics file
Hello budget 30$ I have range breakout expert advisor with pending orders, when the range is complete, the expert sends pending orders, I need to add an option so that when the range is complete, the expert advisor doesn't send pending orders, when the price exceeds the range, the position is opened, executive Orders. I need to make new option True/False True = Executive Orders. False = Pending orders I want the
Wealth Ascent 30 - 50 USD
MASTER PROMPT: Advanced Multi-Strategy Trading Robot Role: You are a senior quantitative trader, algorithmic trading engineer, and risk manager with 10+ years of experience in crypto, forex, and indices markets. Goal: Design a robust, automated trading robot that integrates multiple proven trading strategies and focuses on long-term, risk-adjusted profitability, capital preservation, and adaptive market behavior. ---
I got access to a trial mt5 EA(only ex5 and not mql5 file) which is an ultra fast scalper on gold that operates only using pending orders which is working absolutely insane when backtesting or live trading using demo account but when you try to back test it on a live/real account the results are horrible !...both demo and real accounts belong to the same broker both same leverage and same type spread wise but the EA
Hi , I need an MT4 EA with the following requirements (BUY only): BUY only: The EA must open BUY trades only . No sell orders at all. Pending orders on objects (Touch trigger, no candle close): I draw objects on the chart: Trendline / Rectangle (Box) / Horizontal Line . The EA places a BUY pending order exactly at the object price so it triggers when price touches the object. For a trendline, the EA must continuously
Hello everyone, I am looking for a highly experienced MQL5 developer to build a fully automated Expert Advisor (EA) based strictly on Smart Money Concepts (SMC) 🔍 Core Strategy Requirements (SMC Only) The EA must be based on Advanced Smart Money Concepts , including: ✅ Market Structure (BOS & CHOCH) ✅ Liquidity concepts (equal highs/lows, stop hunts)✅ Trap Blocks / Fake Order Blocks detection ✅ Valid Order
EMA Triple-Cross Trading EA Constitution 1. Instruments Bot operates ONLY on: • UK100 (FTSE 100 Cash) • CASH30 (Dow Jones / DJI30) • GOLD (XAUUSD) Developer Note: Please ensure proper handling of contract sizes and point values for indices vs gold when calculating lot size . 2. Chart & Timeframes Primary Execution Timeframe: ➡ M15 Higher Timeframe Bias: ➡ H1 Trades are allowed ONLY in the direction of H1 EMA200: •
The EA should focus on high-speed scalping on the 1-minute timeframe or every tick execution and must perform incredibly well on demo accounts with consistent profitability. EA Requirements: Platform: MetaTrader 5 (MT5) Trading style: Scalping (1-minute or tick-based execution) Dynamic lot size increase system (auto lot multiplier or equity-based lot adjustment) Should work efficiently even on minimum equity (as low
Sukurkite arba naudokite esamą pelningą pagal sutartį ir pakeiskite jo logiką pagal pageidavimus. Auksinis skalperio robotas. Taip pat galima jį iš karto pateikti, parodant, kaip jis veikia, kokia jo logika
Scope Build a new EA from scratch implementing my provided strategy rules exactly. Deterministic, one logical action per tick (close OR place OR modify OR delete). Two-sided system (BUY + SELL). Includes stacking/maintenance, hygiene (pending correction), reduction closes, breakeven close logic, and a final termination/unwind mode. Iteration workflow (LOCKED / UNLOCKED) . Developer must maintain two copies/branches

プロジェクト情報

予算
30+ USD