• Home
  • Forums
  • Trades
  • News
  • Calendar
  • Market
  • Brokers
  • Login
  • Join
  • 11:52am
Menu
  • Forums
  • Trades
  • News
  • Calendar
  • Market
  • Brokers
  • Login
  • Join
  • 11:52am
Sister Sites
  • Metals Mine
  • Energy EXCH
  • Crypto Craft

Options

Bookmark Thread

First Page First Unread Last Page Last Post

Print Thread

Similar Threads

Most Famous Blessing 3.9.6 EA and Setfiles 3,465 replies

Blessing EA by ananthhh 13 replies

Forward testing results of my ea modified from Blessing 3.9.6 18 replies

Flexi Bars Swing V2 modification help wanted 1 reply

help wanted with dashboard modification 5 replies

  • Platform Tech
  • /
  • Reply to Thread
  • Subscribe
Tags: 'Blessing' EA Modification Wanted
Cancel

'Blessing' EA Modification Wanted

  • Post #1
  • Quote
  • First Post: Dec 14, 2010 12:58am Dec 14, 2010 12:58am
  •  panthere
  • | Joined Aug 2010 | Status: Member | 150 Posts
Hello.

here is a version of BLESSING (old) love this version.
I wonder if someone could if possible to change this code.

I like that from a certain loss level of the system stopped placing orders and goes into this hedging hedging will be cut according to an indicator such example ITREND.
if ITREND gives a signal of up to 2 or 3 different TF I close the sell part of hedging and let them run and vice versa buy a stop of X pips will be placed if the hedging goes wrong, if it goes well Hedging will be cut after a profit of PIPS XX BLESSING then resumes its normal cycle.
I'd be really happy if someone could do this but I am aware that it must be difficult but I try my luck anyway on this forum :-)
Excuse me for my English but I am French and I use google translate.
thank you very much and big kiss to whoever can help me
Miss Panther


Inserted Code
//+------------------------------------------------------------------+
//|                                          Bless.FifthE.TK.2.0.mq4 |
//|                Open source at Forex-TSD forum, www.forex-tsd.com |
//|                        Ideas proposed by rifo.valas Bless System |
//|                  Coded by FiFtHeLeMeNt, [email protected] |
//|                        Mofified by tkforextsd, [email protected] |
//+------------------------------------------------------------------+
//
//  History of FifthE's versions:
//    Verion 1.0.0: bless_FiftHeLeMent_noTG_1.0.0.mq4
//       Original FifthE version without MaxTrades
//    Verion 1.0.1: bless_FiftHeLeMent_noTG_1.0.1.mq4
//       FifthE version with MaxTrades
//    Verion 1.0.3: bless_FiftHeLeMent_1.0.3.mq4
//       FifthE version with spread control and LotInc
//
//  History of TK's versions:
//    Based on FifthE's bless_FiftHeLeMent_noTG_1.0.1.mq4
//    Version 1.0.2: bless_FiftHeLeMent_noTG_1.0.2.mq4 
//       Add stoploss at MaxTrades level to protect capital
//    Version 1.0.3: bless_FiftHeLeMent_noTG_1.0.3.mq4 
//       Add EA closing features: CloseImmediately, CloseOnTime, 
//           CloseOnFloatingLoss, CloseOnEquityTarget
//    Version 1.0.4: bless_FiftHeLeMent_noTG_1.0.4.mq4
//       Add selectable multiplier progression
//       Add auto restart after equity target reach
//       Add email alert when margin level low 
//       Add email alert when trade level reach a preset level
//       Add more info in chart comments
//
//  History of unified versions:
//    Version 2.0: Bless.FifthE.TK.2.0.mq4
//      Merge TK's bless_FiFtHeLeMeNt_noTG_1.0.4.mq4 and FifthE's bless_FiftHeLeMent_1.0.3.mq4
//      Unified features: Selectable Multiplier, LotInc, Spread control, MaxTrades stop loss, 
//          x% equity restart, closing order management, email alert
//      New features:
//          Breakeven bail out after BEP_Level reach
//          Opposite direction hedge at MaxTrades
//    Version 2.0.1: Bless.FifthE.TK.2.0.1.mq4
//       Add options for buying and selling management
//
//


#property copyright "Forex-tsd open source"
#property link      "http://www.forex-tsd.com"

#include <stdlib.mqh>

extern string  Expert_Name = "---- Bless.FifthE.TK.2.0.mq4 ----";
extern int     MinGS = 20;          //pips between each level
extern int     TP = 35;             //pips to take profit each trade
extern double  lot = 0.01;          //starting lot size
extern bool    BuySide=true;        // Buy orders will be placed
extern bool    SellSide=true;       // Sell orders will be placed
extern bool    AccountIsMini = true; // Set to true if trading mini account, otherwise set to false
extern int     MaxTrades = 7;       //max level allowed
extern int     RegularSpread = 10;   //max spread rejection, reject trades if spread exceed this value
extern double  Multiplier = 2;      //lots progressive multiplier factor
extern double  LotInc = 0;          //Lot increment on each level
extern int     BEP_Level = 5;       //breakeven bail out level
extern bool    SetMaxTradesSL = False; //Set stop loss at Maxtrades level
extern bool    SetMaxTradesHedge = true; //Set hedge trade at MaxTrades level

extern string  Close_Management = "---- EA Closing Management ----";
extern bool    CloseImmediately = false;

extern string  s1 = "---- Close on time setting ----";
extern bool    CloseOnTime = false;
extern int     CloseHour = 23;      //Time to close, Hour
extern int     CloseMinute = 0;     //Time to close, minutes

extern string  s2 = "---- Close when floating profit/loss no more than MaxFloatPL settings ----";
extern bool    CloseOnFloatPL = false;
extern double  MaxFloatPL = -100.00;    //Max floating profit/loss allowed when closing EA

extern string  s3 = "---- Close when equity hit target settings ----";
extern bool    CloseOnEquityTarget = false;
extern bool    AutoRestartAfterEqTarget = True;
extern double  EquityTargetPercentage = 5.0;    //Percentage equity growth when closing EA

extern string  s4 = "---- Comment settings ----";
extern bool    DisableComments = false;   //turn off comments

extern string  s5 = "---- Email settings ----";
extern bool    TestEmail = false;         //if true send a test email every 5 minutes
extern string  EmailAddress = "[email protected]";
extern int     EmailIteration = 3;        //How namy times email send when alert active

extern string  s6 = "---- Alert settings ----";
extern bool    AlertOnLowMargin = false;  //email alert when margin low
extern double  MarginPercentage = 100.0;  //margin low percentage
extern bool    AlertOnTradeLevel = false; //email alert when trade level reach
extern int     AlertTradeLevel = 6;       //trade level to alert


int magic;
double lot2; //lots to open at each level
int LotDigits;
datetime tob,tos; //Time Out Buy & Sell
double SL_Point; //stoploss price at MaxTrades level
double TP_Point; //TP price at each level


bool Halt = false;
double StartBalance, EquityTarget;
double MarginPer;
int CurrentLevel = 0;
int BuyLevel, SellLevel;
int Slippage = 1;
bool HedgeBuy = false;
bool HedgeSell = false;


//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----


   
//----
   return(0);
  }
  
int init()
  {
   if (Symbol() == "AUDCADm" || Symbol() == "AUDCAD") { magic = 211001; }
   if (Symbol() == "AUDJPYm" || Symbol() == "AUDJPY") { magic = 211002; }
   if (Symbol() == "AUDNZDm" || Symbol() == "AUDNZD") { magic = 211003; }
   if (Symbol() == "AUDUSDm" || Symbol() == "AUDUSD") { magic = 211004; }
   if (Symbol() == "CHFJPYm" || Symbol() == "CHFJPY") { magic = 211005; }
   if (Symbol() == "EURAUDm" || Symbol() == "EURAUD") { magic = 211006; }
   if (Symbol() == "EURCADm" || Symbol() == "EURCAD") { magic = 211007; }
   if (Symbol() == "EURCHFm" || Symbol() == "EURCHF") { magic = 211008; }
   if (Symbol() == "EURGBPm" || Symbol() == "EURGBP") { magic = 211009; }
   if (Symbol() == "EURJPYm" || Symbol() == "EURJPY") { magic = 211010; }
   if (Symbol() == "EURUSDm" || Symbol() == "EURUSD") { magic = 211011; }
   if (Symbol() == "GBPCHFm" || Symbol() == "GBPCHF") { magic = 211012; }
   if (Symbol() == "GBPJPYm" || Symbol() == "GBPJPY") { magic = 211013; }
   if (Symbol() == "GBPUSDm" || Symbol() == "GBPUSD") { magic = 211014; }
   if (Symbol() == "NZDJPYm" || Symbol() == "NZDJPY") { magic = 211015; }
   if (Symbol() == "NZDUSDm" || Symbol() == "NZDUSD") { magic = 211016; }
   if (Symbol() == "USDCHFm" || Symbol() == "USDCHF") { magic = 211017; }
   if (Symbol() == "USDJPYm" || Symbol() == "USDJPY") { magic = 211018; }
   if (Symbol() == "USDCADm" || Symbol() == "USDCAD") { magic = 211019; }
   if (magic == 0) { magic = 211999; }
   
   Halt = false;
   LotDigits = 1;
   if (AccountIsMini) { LotDigits = 2; }
   HedgeBuy = false;
   HedgeSell = false;
   return(0);
  }

void OpenBuy()
 {
    int ticket,err;
        if (!GlobalVariableCheck("InTrade")) {
               GlobalVariableSet("InTrade", TimeCurrent());  // set lock indicator
               ticket = OrderSend(Symbol(),OP_BUY,lot2,Ask,Slippage,SL_Point,TP_Point,"EA Order",magic,0,Red);
               GlobalVariableDel("InTrade");   // clear lock indicator
        }
 }

void OpenSell()
 {
    int ticket,err;
        if (!GlobalVariableCheck("InTrade")) {
               GlobalVariableSet("InTrade", TimeCurrent());  // set lock indicator
               ticket = OrderSend(Symbol(),OP_SELL,lot2,Bid,Slippage,SL_Point,TP_Point,"EA Order",magic,0,Red);
               GlobalVariableDel("InTrade");   // clear lock indicator
        }
 }


void ManageBuy() 
 {
   int lasttradetime = 0;
   double lastopenprice=0;
   double maxlots = 0;
   double lasttp=0;
   double lastsl=0;
   int lastordertype=-1;
   int lastorderticket=0;
   int y=0; 

   BuyLevel = 0;
   for (y = 0; y < OrdersTotal(); y++)
   {
      OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
      if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY)) { continue; }
      if (OrderOpenTime() >= lasttradetime) { 
        lasttradetime = OrderOpenTime();
        lastopenprice = OrderOpenPrice();
        lastordertype=OrderType();
        lastorderticket=OrderTicket();
        lasttp=OrderTakeProfit();
        lastsl=OrderStopLoss();
      }     
      if (OrderLots() > maxlots) { maxlots = OrderLots(); }
      BuyLevel++;
   }
   
   lot2 = NormalizeDouble(lot*MathPow(Multiplier, BuyLevel)+LotInc, LotDigits);
   
   SL_Point = 0;
   TP_Point = Ask + TP*Point;
   if ((BuyLevel==0) && (((Ask-Bid)/Point)<=RegularSpread) && !Halt ) { 
      OpenBuy(); 
      BuyLevel++; 
      CurrentLevel=BuyLevel;
      return(0); 
   }
   
   if ((lastopenprice-Ask>MinGS*Point) && (BuyLevel==MaxTrades-1) && (SetMaxTradesSL || SetMaxTradesHedge) ) {
      //set stoploss at the last open level
      SL_Point = Ask - MinGS*Point; 
   }

   if ((lastopenprice-Ask>MinGS*Point) && (BuyLevel<MaxTrades) && (((Ask-Bid)/Point)<=RegularSpread) && !Halt && !HedgeBuy ) {
      OpenBuy();
      BuyLevel++;
      CurrentLevel=BuyLevel;
      return(0);
   }

   CurrentLevel=BuyLevel;
   
/////////// TP
/*
   double sumlots=0;
   double sump=0;
   double avgp=0;
   for (y = 0; y < OrdersTotal(); y++)
   {
      OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
      if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY)) { continue; }
      sumlots=sumlots+OrderLots();
      sump=OrderOpenPrice()*OrderLots()+sump;
   }
   
   if (sumlots>0) {
     avgp=NormalizeDouble(sump/sumlots,Digits);
     double tpp=NormalizeDouble(TP/10/sumlots*Point+avgp,Digits);
     
     for (y = 0; y < OrdersTotal(); y++)
     {
       OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
       if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY) || (OrderTakeProfit()==tpp)) { continue; }
       OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tpp,0,Red);
     }
     
     
   }
 */  

     for (y = OrdersTotal()-1; y >= 0; y--)
     {
       OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
       if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY) || (OrderTakeProfit()==lasttp) || (lasttp==0) || HedgeBuy ) { continue; }
       OrderModify(OrderTicket(),OrderOpenPrice(),lastsl,lasttp,0,Red);
     }

   //reverse hedge
   if (BuyLevel==MaxTrades && !HedgeSell && SetMaxTradesHedge) {
      TP_Point = lastsl; 
      SL_Point = lasttp;
      OpenSell();
      HedgeSell = true;
      return(0);
   }

}
    
void ManageSell() 
 {
   int lasttradetime = 0;
   double lastopenprice=0;
   double maxlots = 0;
   double lasttp=0;
   double lastsl=0;
   int lastordertype=-1;
   int lastorderticket=0;
   int y=0; 

   SellLevel = 0;
   for (y = 0; y < OrdersTotal(); y++)
   {
      OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
      if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL)) { continue; }
      if (OrderOpenTime() >= lasttradetime) { 
        lasttradetime = OrderOpenTime();
        lastopenprice = OrderOpenPrice();
        lastordertype=OrderType();
        lastorderticket=OrderTicket();
        lasttp=OrderTakeProfit();
        lastsl=OrderStopLoss();
      }     
      if (OrderLots() > maxlots) { maxlots = OrderLots(); }
      SellLevel++;
   }
   
   lot2 = NormalizeDouble(lot*MathPow(Multiplier, SellLevel)+LotInc, LotDigits);
   
   SL_Point = 0;
   TP_Point = Bid-TP*Point;
   if ((SellLevel==0) && (((Ask-Bid)/Point)<=RegularSpread) && !Halt ) { 
      OpenSell(); 
      SellLevel++; 
      if (SellLevel>CurrentLevel) CurrentLevel=SellLevel;
      return(0); 
   }
   
   if ((Bid-lastopenprice>MinGS*Point) && (SellLevel==MaxTrades-1) && (SetMaxTradesSL || SetMaxTradesHedge) ) {
      //set stoploss at the last open level
      SL_Point = Bid + MinGS*Point; 
   }

   if ((Bid-lastopenprice>MinGS*Point) && (lastopenprice>0) && (SellLevel<MaxTrades) && (((Ask-Bid)/Point)<=RegularSpread) && !Halt && !HedgeSell ) {
      OpenSell();
      SellLevel++;
      if (SellLevel>CurrentLevel) CurrentLevel=SellLevel;
      return(0);
   }
   if (SellLevel>CurrentLevel) CurrentLevel=SellLevel;
   
/////////// TP
/*   double sumlots=0;
   double sump=0;
   double avgp=0;
   for (y = 0; y < OrdersTotal(); y++)
   {
      OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
      if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL)) { continue; }
      sumlots=sumlots+OrderLots();
      sump=OrderOpenPrice()*OrderLots()+sump;
   }
   
   if (sumlots>0) {
     avgp=NormalizeDouble(sump/sumlots,Digits);
     double tpp=NormalizeDouble(-TP/10/sumlots*Point+avgp,Digits);
     
     for (y = 0; y < OrdersTotal(); y++)
     {
       OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
       if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL) || (OrderTakeProfit()==tpp)) { continue; }
       OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tpp,0,Red);
     }
     
     
   }
 */ 
 
      for (y = OrdersTotal()-1; y >= 0; y--)
     {
       OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
       if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL) || (OrderTakeProfit()==lasttp) || (lasttp==0) || HedgeSell || HedgeSell ) { continue; }
       OrderModify(OrderTicket(),OrderOpenPrice(),lastsl,lasttp,0,Red);
     }

   //reverse hedge
   if (SellLevel==MaxTrades && !HedgeBuy && SetMaxTradesHedge) {
      TP_Point = lastsl;
      SL_Point = lasttp;
      OpenBuy();
      HedgeBuy = true;
      return(0);
   }
 
 }

  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
     
      ManageClose();
      
      if (BuySide)
         ManageBuy();
      
      if (SellSide)
         ManageSell();

      if(!IsTesting()) HandleAlerts();
      
      if(!IsTesting()) ChartComment();
      
//----
   return(0);
  }
//+------------------------------------------------------------------+


void CloseAllTrades()
{
   int  total = OrdersTotal();
   for (int y=OrdersTotal()-1; y>=0; y--)  
   {
      OrderSelect(y, SELECT_BY_POS, MODE_TRADES);
      if (OrderMagicNumber() == magic) 
      {
         int type = OrderType();
         bool result = false;
         int  TriesNum = 5;
         int tries=0;
         while (!result && tries < TriesNum) 
         {
            RefreshRates();
            switch(type)
            {
               case OP_BUY : 
                  result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),Slippage,Pink);
                  break;
               case OP_SELL: 
                  result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),Slippage,Pink);             
            }            
            tries++;
         }
         if (!result) Print("Error closing order : ",ErrorDescription(GetLastError()));  
      }
   }
}


bool LastCloseOnEquityTarget = false;

void ManageClose()
{
   //Breakeven bail out after BEP_Level
   if ((CurrentLevel>=BEP_Level) && (AccountProfit()>=0)) {
      CloseAllTrades();
   }

   //Reverse hedge at Maxtrades level
   if ((BuyLevel<MaxTrades) && HedgeSell) { HedgeSell = false; }
   if ((SellLevel<MaxTrades) && HedgeBuy) { HedgeBuy = false; }

   if (CloseOnEquityTarget && !LastCloseOnEquityTarget) { 
      StartBalance = AccountBalance();
   }
   LastCloseOnEquityTarget = CloseOnEquityTarget;
   
   if (CloseImmediately) 
   {
      CloseAllTrades();
      Halt = true;
   }
   if (CloseOnTime && Hour()==CloseHour && Minute()>=CloseMinute) 
   {
      CloseAllTrades();
      Halt = true;
   }
   if (CloseOnFloatPL && AccountProfit()>=MaxFloatPL)
   {
      CloseAllTrades();
      Halt = true;
   }
   if (CloseOnEquityTarget && !Halt)
   {
      EquityTarget = StartBalance*(1.0 + EquityTargetPercentage/100.0);
      if (AccountEquity()>=EquityTarget )
      {
         CloseAllTrades();
         StartBalance = AccountBalance();
         if (!AutoRestartAfterEqTarget) Halt = true;
      }
   }
   if (!CloseImmediately && !CloseOnTime && !CloseOnFloatPL && !CloseOnEquityTarget )
   {
      if (Halt) StartBalance = AccountBalance();
      Halt = false;
   }
     
}


void ChartComment()
{
   string sComment    = "";
   string sp          = "----------------------------------------\n";
   string Activity    = "-----------Trading Activity-------------\n";
   string CloseManage = "-----------Closing Management-----------\n";
   string AcctStatus  = "-----------Account Status---------------\n";
   string NL          = "\n";
 
   double   spread = MarketInfo(Symbol(),MODE_SPREAD);
   double   SwapLong = MarketInfo(Symbol(),MODE_SWAPLONG);
   double   SwapShort = MarketInfo(Symbol(),MODE_SWAPSHORT);
 
   
   sComment = Activity;
   sComment = sComment + "Current time is " + TimeToStr(TimeCurrent()) + NL;
   if (Halt)
      sComment = sComment + "Trading halt!!! To resume trading set ALL closing conditions to FALSE." + NL;
   else
      sComment = sComment + "Trading is active at level " + CurrentLevel + NL;

   if (CloseImmediately || CloseOnTime || CloseOnFloatPL || CloseOnEquityTarget)
   {
      sComment = sComment + CloseManage;
      if (CloseImmediately)
         sComment = sComment + "Close Immediately!!!!" + NL;
      if (CloseOnTime)
         sComment = sComment + "Close on time is active when " + CloseHour + ":" + CloseMinute + NL;
      if (CloseOnFloatPL)
         sComment = sComment + "Close on floating loss is active when float P/L >= " + DoubleToStr(MaxFloatPL,2) + NL;
      if (CloseOnEquityTarget)
         sComment = sComment + "Close on equity target is active when EquityTarget >= " + DoubleToStr(EquityTarget,2) + NL;
   }

   sComment = sComment + AcctStatus;
   sComment = sComment + "Balance: " + DoubleToStr(AccountBalance(), 2) + ", Equity: " + DoubleToStr(AccountEquity(),2)
               + ", Leverage: " + DoubleToStr(AccountLeverage(),2) + ", Lots: " + DoubleToStr(lot2,2) + NL;
   sComment = sComment + "MinGS: " + MinGS + ", TP: " + TP + ", Buy Level: " + BuyLevel + ", Sell Level: " + SellLevel + ", MaxTrades: " + MaxTrades + NL;
   
   sComment = sComment + "Spread: " + DoubleToStr(spread,1) + ", SWAP Long: " + DoubleToStr(SwapLong,2) + ", SWAP Short: " + DoubleToStr(SwapShort,2) +  NL;

   sComment = sComment + "AccountMargin: " + DoubleToStr(AccountMargin(), 2) + ", Margin%: " + DoubleToStr(MarginPer,2) + "%" + NL;
   sComment = sComment + sp;
      
   if (!DisableComments) Comment(sComment);
   else Comment("");
   
}

//Alert handling variables
bool LastTestEmail = false;
int  TestEmailCnt = 0;
bool LastAlertOnLowMargin = false;
int  AlertOnLowMarginCnt = 0;
bool LastAlertOnTradeLevel = false;
int  AlertOnTradeLevelCnt = 0;
bool TimeToSend;
datetime LastTime;


void HandleAlerts()
{
   string Message = "";
   
   //RefreshRates();
   //Switch on detection
   if (TestEmail && !LastTestEmail) { 
      TestEmailCnt = EmailIteration; 
      LastTime = TimeCurrent(); 
   }
   if (AlertOnLowMargin && !LastAlertOnLowMargin) { 
      AlertOnLowMarginCnt = EmailIteration; 
      LastTime = TimeCurrent(); 
   }
   if (AlertOnTradeLevel && !LastAlertOnTradeLevel) { 
      AlertOnTradeLevelCnt = EmailIteration; 
      LastTime = TimeCurrent(); 
   }

   //Update
   LastTestEmail = TestEmail;
   LastAlertOnLowMargin = AlertOnLowMargin;
   LastAlertOnTradeLevel = AlertOnTradeLevel;
   
   //Handle email alert
   if (TimeCurrent() - LastTime >= 300) { TimeToSend = true; }
   else { TimeToSend = false; }
   
   
  
   
   if (AccountMargin()==0) MarginPer = 100000;
   else MarginPer = AccountEquity()/AccountMargin()*100.0;
     
      AlertOnLowMarginCnt--;
      LastTime = TimeCurrent();
   }
  • Post #2
  • Quote
  • Feb 27, 2017 11:19am Feb 27, 2017 11:19am
  •  steeve
  • | Joined Feb 2017 | Status: Junior Member | 4 Posts
Hello,
are you sure is it an old version of newest Blessing ?
I see the structure and the code/variables are very different..

S
 
 
  • Post #3
  • Quote
  • Feb 27, 2017 4:49pm Feb 27, 2017 4:49pm
  •  bazze
  • | Joined Nov 2013 | Status: Member | 1,130 Posts
Quoting steeve
Disliked
Hello, are you sure is it an old version of newest Blessing ? I see the structure and the code/variables are very different.. S
Ignored
steeve, you are a little bit to late to the party, the question was asked in 2010!!!
 
 
  • Post #4
  • Quote
  • Last Post: Nov 22, 2020 12:10am Nov 22, 2020 12:10am
  •  bahmanasker
  • | Joined Nov 2020 | Status: Junior Member | 1 Post
I have looked through the code of Blessing 3.9.6, and I liked its style of programming.
However I would suggest replace some logically separated codes there with distinct modules (like user functions). as it can dramatically improve the readability of the code. I notice there some code sections with slashed headings, which could be replaced with separate modules.
 
 
  • Platform Tech
  • /
  • 'Blessing' EA Modification Wanted
  • Reply to Thread
0 traders viewing now
Top of Page
  • Facebook
  • Twitter
About FF
  • Mission
  • Products
  • User Guide
  • Media Kit
  • Blog
  • Contact
FF Products
  • Forums
  • Trades
  • Calendar
  • News
  • Market
  • Brokers
  • Trade Explorer
FF Website
  • Homepage
  • Search
  • Members
  • Report a Bug
Follow FF
  • Facebook
  • Twitter

FF Sister Sites:

  • Metals Mine
  • Energy EXCH
  • Crypto Craft

Forex Factory® is a brand of Fair Economy, Inc.

Terms of Service / ©2023