FXCasino_v1

Author: Copyright � 2006, Forex-TSD.com
Orders Execution
It automatically opens orders when conditions are reachedChecks for the total of open orders
Miscellaneous
It plays sound alerts
0 Views
0 Downloads
0 Favorites
FXCasino_v1
//+------------------------------------------------------------------+
//|                                                  FXCasino_v1.mq4 |
//|                                  Copyright © 2006, Forex-TSD.com |
//|                         Written by IgorAD,igorad2003@yahoo.co.uk |   
//|            http://finance.groups.yahoo.com/group/TrendLaboratory |                                      
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Forex-TSD.com "
#property link      "http://www.forex-tsd.com/"

//---- input parameters
extern string     Expert_Name = "---- FXCasino_v1 ----";

extern int        Magic            = 10000;
extern int        Slippage         =     6;

extern string     Main_Parameters = " Trade Volume & Trade Method";
extern double     Lots           =     0.1;    // Lot size
extern bool       StopTrade      =   false;  // Stop of Trade switch

extern string     Data = " Input Data ";

extern int        TimeZone       =       0; // Difference between server time and local time   
extern int        StartTime      =       0; // Start time for openning of orders 
extern int        FinTime        =      23; // Time of closing pending orders
extern double     BetSize        =      50; // Bet Size in pips
extern bool       UseMM          =    true; // MM Switch
extern int        SpinNumber     =     100; // Min Number of Spins(Trades) for Profit
extern double     DeltaLong      =      10; // Momentum Filter for Long in pips
extern double     DeltaShort     =      10; // Momentum Filter for Short in pips
extern bool       UseSound       =    true; // Roulette Sound Switch

int      cnt=0, ticket, mode=0, digit=0, numords, CountLong, CountShort, trade, contr =0;
double   SellProfit=0,BuyProfit=0, Bulls, Bears, SigBulls, SigBears, Bulls1, Bears1, SigBulls1, SigBears1;
double   BuyStop=0, SellStop=0, SL = 0, Lotsi=0, PrevLotsi;
bool     BuyInTrade=false, SellInTrade=false;

int      OrdDel;
double   pastpips[];


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---- 

//----
   return(0);
  }
  
// ---- Money Management
double MoneyManagement (int flag)
{
   if(flag>0)
   { 
   PastTradeProfit();
   double PastProfit = pastpips[1];
   if ( PastProfit < 0 ) Lotsi += Lots;
   else Lotsi -= Lots;
   if(Lotsi<Lots) Lotsi=Lots;
   }
   else Lotsi=Lots;
   return(Lotsi);
}   

// ---- Open Sell Orders
void SellOrdOpen()
{		     

   
	double SellPrice=Low[1] - DeltaShort*Point;	  
	  if (BetSize   > 0) 
	  {
	  SellStop  = SellPrice + 0.1*BetSize/Lots*Point; 
     SellProfit= SellPrice - 0.1*BetSize/Lots*Point;
     }
     else
     {SellStop  = 0; SellProfit = 0;}
      
	     
	ticket = OrderSend( Symbol(),OP_SELLSTOP,Lotsi,
	                    NormalizeDouble(SellPrice, digit),
	                    Slippage,
	                    NormalizeDouble(SellStop , digit),
	                    NormalizeDouble(SellProfit   , digit),
	                    "SELL",Magic,0,Red);
            
   SellInTrade=false;            
            
      if(ticket<0)
      {
      Print("SELLSTOP: OrderSend failed with error #",GetLastError());
      }
 
   return(0);
}

// ---- Open Buy Orders
void BuyOrdOpen()
{		     

   
	double BuyPrice =High[1] + DeltaLong*Point;
	
	  if ( BetSize > 0) 
	  {
	  BuyStop = BuyPrice - 0.1*BetSize/Lots*Point; 
     BuyProfit=BuyPrice + 0.1*BetSize/Lots*Point;    
	  }
	  else
	  {BuyStop=0;BuyProfit=0;} 
	  
		 
   ticket = OrderSend(Symbol(),OP_BUYSTOP, Lotsi,
	                   NormalizeDouble(BuyPrice, digit),
	                   Slippage,
	                   NormalizeDouble(BuyStop , digit), 
	                   NormalizeDouble(BuyProfit  , digit),
	                   "BUY",Magic,0,Blue);
                
   BuyInTrade=false;            
            
   if(ticket<0)
   {
   Print("BUYSTOP: OrderSend failed with error #",GetLastError());
   //return(0);
   }
   return(0);
}      

// ---- Delete Extra Orders
void ExtraOrdDel()
{
   int total = OrdersTotal();
   for (cnt=0;cnt<total;cnt++)
   { 
   OrderSelect(cnt, SELECT_BY_POS);   
   mode=OrderType();
      if ( OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)     
      {
         if (mode==OP_BUY  && !BuyInTrade) BuyInTrade =true; 
        
         if (mode==OP_SELL && !SellInTrade) SellInTrade=true;

         if (mode > OP_SELL && (BuyInTrade || SellInTrade)) 
         {
         OrderDelete(OrderTicket());
         }
      }
   }        
}
// ---- Scan Trades
int ScanTrades()
{   
   int total = OrdersTotal();
   numords = 0;
      
   for(cnt=0; cnt<total; cnt++) 
   {        
   OrderSelect(cnt, SELECT_BY_POS);            
   if(OrderSymbol() == Symbol() && OrderType()>=OP_BUY && OrderMagicNumber() == Magic) 
   numords++;
   }
   return(numords);
}

// Closing of Pending Orders      
void PendOrdDel()
{
    int total=OrdersTotal();
    for (int cnt=total-1;cnt>=0;cnt--)
    { 
      OrderSelect(cnt, SELECT_BY_POS,MODE_TRADES);   
      
        if ( OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)   
        {
        int mode=OrderType();
        
        bool result = false;
          switch(mode)
          {
            
            case OP_BUYSTOP   : result = OrderDelete( OrderTicket() ); 
          
            case OP_SELLSTOP  : result = OrderDelete( OrderTicket() ); 
          if(!result)
            {
            Print("OrderSend failed with error #",GetLastError());
            }
          OrdDel = 1;
          return(0); 
          }
        }
      } 
  return;
  }    


void PastTradeProfit()
{
   double Balance=0;
   int total=HistoryTotal(), n=0;
   ArrayResize(pastpips,total);
   for (int cnt=total-1;cnt>=0;cnt--) 
   {
      if ( OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)     
      {
         if (!OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY) && OrderType() > OP_SELL ) continue;
         
         if (OrderType()==OP_BUY)
         {n = n+1;
         pastpips[n] = MathRound((OrderClosePrice()-OrderOpenPrice())/MarketInfo(Symbol(),MODE_POINT));}
         
         if (OrderType()==OP_SELL)
         {n = n+1;
         pastpips[n] = MathRound((OrderOpenPrice()-OrderClosePrice())/MarketInfo(Symbol(),MODE_POINT));}
         Balance = Balance + pastpips[n];
      }
   if ( n > SpinNumber && Lotsi==Lots && Balance>0) StopTrade = true;
   }
} 


//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
   if(Bars < 1) {Print("Not enough bars for this strategy");return(0);}
   
   if(AccountFreeMargin()<(1000*Lots)){
   Print("We have no money. Free Margin = ", AccountFreeMargin());
   return(0);}
//---- 

   int start  = StartTime + TimeZone;
   int finish = FinTime   + TimeZone;  
      
   digit  = MarketInfo(Symbol(),MODE_DIGITS);
   double Tolernce = 5;
   
   if(!StopTrade && ScanTrades()==0 && (Hour() >= start && Hour() < finish ) && CurTime()>= Time[0] && CurTime()<= Time[0]+60)
   {
   if ( OrdDel == 0) Lotsi = MoneyManagement(UseMM);
   else Lotsi=PrevLotsi;
      if (!StopTrade)
      {
      if(UseSound) PlaySound("rulette.wav");
      BuyOrdOpen();
      SellOrdOpen();
      PrevLotsi=Lotsi;
      OrdDel = 0;
      }
   }

   if (ScanTrades()>0) 
   {
   ExtraOrdDel();
   if (Hour() >= finish || StopTrade) {PendOrdDel();} 
   }
   
 return(0);
}//int start
//+------------------------------------------------------------------+





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 ---