_Turtle Channel System

Author: by djindyfx
Orders Execution
Checks for the total of open ordersIt can change open orders parameters, due to possible stepping strategyIt automatically opens orders when conditions are reached
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites

Profitability Reports

GBP/CAD Oct 2024 - Jan 2025
74.00 %
Total Trades 63
Won Trades 0
Lost trades 0
Win Rate 0.00 %
Expected payoff -15.01
Gross Profit 2667.80
Gross Loss -3613.23
Total Net Profit -945.43
-100%
-50%
0%
50%
100%
GBP/USD Oct 2024 - Jan 2025
31.00 %
Total Trades 60
Won Trades 4
Lost trades 56
Win Rate 0.07 %
Expected payoff -54.10
Gross Profit 1483.00
Gross Loss -4729.00
Total Net Profit -3246.00
-100%
-50%
0%
50%
100%
_Turtle Channel System
//+------------------------------------------------------------------+
//|                              Donchain counter-channel system.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "by djindyfx"
#property link      ""


extern double Lots    =1.0;                  
extern int    Slippage=3;                    
extern int    Magic   =20051006;             
// Optimalization parameters:
extern int    LngPeriod=20;              
extern int    ShtPeriod=10;
extern int Entry_Stop=50;
//extern int    TimeFrame    =PERIOD_D1;       // Time frame of the Donchain indicator.
// Privete variables
datetime last_trade_time;                    // in order to execute maximum only one trade a day.
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---- 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ReportStrategy(int Magic)
  {
   int    totalorders=HistoryTotal();
   double StrategyProfit=0.0;
   int    StrategyOrders=0;
   for(int j=0; j<totalorders;j++)
     { if(OrderSelect(j, SELECT_BY_POS, MODE_HISTORY) && (OrderMagicNumber()==Magic))
        {
         if((OrderType()==OP_BUY) || (OrderType()==OP_SELL))
           {
            StrategyOrders++;
            StrategyProfit+=OrderProfit();
           }
        }
     }
   totalorders=OrdersTotal();
   for(j=0; j<totalorders;j++)
     { 
     if(OrderSelect(j, SELECT_BY_POS, MODE_TRADES) && (OrderMagicNumber()==Magic))
        {
         if((OrderType()==OP_BUY) ||(OrderType()==OP_SELL))
           {
            StrategyOrders++;
            StrategyProfit+=OrderProfit();
           }
        }
     }
   Comment("Executed ", StrategyOrders, " trades with ", StrategyProfit," of profit");
   return;
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   double stop_short;
   double stop_long;
   double ELong, EShort;
   
//----
   bool entry_short;
   bool entry_long;
   bool are_we_long    =false;
   bool are_we_short   =false;
   int  orders_in_trade=0;
   int  active_order_ticket;
//---- 
   ReportStrategy(Magic);
   // Check current trades:
   int TotalOrders=OrdersTotal();
     for(int j=0;j<TotalOrders;j++)
     {
      OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
             {
         are_we_long =are_we_long  || OrderType()==OP_BUY;
         are_we_short=are_we_short || OrderType()==OP_SELL;
         orders_in_trade++;
         active_order_ticket=OrderTicket();
        }
     }
     if(orders_in_trade > 1)
     {
      Alert("More than one active trade! Please close the wrong one.");
      return(-1);
     }
     // Lower channel:
     stop_long=Low[iLowest(NULL,0,MODE_LOW,ShtPeriod,0)];
     // Upper channel:
     stop_short=High[iHighest(NULL,0,MODE_HIGH,ShtPeriod,0)];
     
     if(are_we_long)
     {
      // We have long position. Check stop loss:
      OrderSelect(active_order_ticket, SELECT_BY_TICKET);
      if(OrderStopLoss() < stop_long)
         OrderModify(active_order_ticket,OrderOpenPrice(),stop_long,OrderTakeProfit(),0,Blue);
//----
      return(0);
     }
     if(are_we_short)
     {
      // We have long position. Check stop loss:
      OrderSelect(active_order_ticket, SELECT_BY_TICKET);
      if(OrderStopLoss() > stop_short)
         OrderModify(active_order_ticket,OrderOpenPrice(),stop_short,OrderTakeProfit(),0,Blue);
//----
      return(0);
     }
   //Do not execute new trade for a next 24 hours.
  if((CurTime() - last_trade_time)<24*60*60) return(0);
  
   // Upper channel:
   ELong=High[Highest(NULL,0,MODE_HIGH,LngPeriod,0)]; 
   // lower channel:
   EShort=Low[Lowest(NULL,0,MODE_LOW,LngPeriod,0)];
   
   if(entry_long && entry_short)
      Alert("Short and long entry. Probably one of the is wrong.");
     if (ELong==Ask)
     {
      OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Bid-Entry_Stop*Point,0, "", Magic,0, FireBrick); 
      last_trade_time=CurTime();
     }
     if(EShort==Bid)
     {
      OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Ask+Entry_Stop*Point,0,"",Magic,0,FireBrick);
      last_trade_time=CurTime();
     }
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---