#property copyright "Copyright © 2009, Juan Cruz Baudino" #property link "" extern string Pair1 = "EURUSD"; extern string Pair2 = "GBPUSD"; extern int PipsTrigger = 50; extern int PipsInGain = 10; extern double Size = 0.1; extern int MagicNumber = 1400; int start() { double deposito = AccountBalance(); static datetime MarcaTiempo = 0; static int ticket1,ticket2,ticket3,ticket4; datetime NuevaTiempo = Time[0]; double margen1,margen2,margenTotal,equidad; bool orden1,orden2,orden3,orden4; int profit1,profit2,profit3,profit4,profitpar1,profitpar2; int spread1=MarketInfo(Pair1,MODE_SPREAD)*2; int spread2=MarketInfo(Pair2,MODE_SPREAD)*2; int margenPerdida=PipsTrigger-spread1-spread2-PipsInGain; //------------------- //Print screen equidad = AccountEquity(); OrderSelect(ticket1, SELECT_BY_TICKET); profit1=OrderProfit(); OrderSelect(ticket2, SELECT_BY_TICKET); profit2=OrderProfit(); margen1=profit1+profit2; OrderSelect(ticket3, SELECT_BY_TICKET); profit3=OrderProfit(); OrderSelect(ticket4, SELECT_BY_TICKET); profit4=OrderProfit(); margen2=profit3+profit4; if (stage()==1) { Comment( "\n---------", "\nInitial Balance:",deposito, "\nEquity:",equidad, "\nLots:",Size, "\nFirst pair profit: ",margen1, "\nSecond pair profit:",margen2, "\nWaiting the pairs to enter in profit and reach PipsTrigger at: ", PipsTrigger, "\n---------\n"); } if (stage()==2) { Comment( "\n---------", "\nInitial Balance:",deposito, "\nEquity:",equidad, "\nLots:",Size, "\nFirst pair profit: ",margen1, "\nSecond pair profit:",margen2, "\nWaiting to close the rest of the orders to asure profit.", "\n---------\n");} if (!AlreadyOpen()) { Comment( "\n---------", "\nInitial Balance:",deposito, "\nEquity:",equidad, "\nLots:",Size, "\nWaiting to open a hedge.", "\n---------\n");} //Print ON SCREEN //------------------- if(MarcaTiempo != NuevaTiempo) { double Bid1 =MarketInfo(Pair1,MODE_BID); double Ask1 =MarketInfo(Pair1,MODE_ASK); double Bid2 =MarketInfo(Pair2,MODE_BID); double Ask2 =MarketInfo(Pair2,MODE_ASK); double DivValue=iCustom(NULL,NULL,"HedgingHedge Correlation",30,"",Pair1,Pair2,"","PERIOD_M1",0,0); if(AlreadyOpen()==false/* && (DivValue>85)*/) // check for the orders to be opened already { orden1=false; orden2=false; orden3=false; orden4=false; for (int i=0;imargen2) && (margen1>=PipsTrigger)) // if the margin of the first pair is > and it reaches the higher margin the i close this pair in profit... { OrderClose(ticket1,Size,Bid,3,Red); OrderClose(ticket2,Size,Ask,3,Red); ticket1=OrderSend(Pair1,OP_BUY,Size,Ask1,5,0,0,"COMPRA primer par, "+Pair1,1,0,Green); ticket2=OrderSend(Pair2,OP_SELL,Size,Bid2,5,0,0,"VENTA primer par, "+Pair2,2,0,Red); } if ((margen2>margen1) && (margen2>=PipsTrigger)) // is margin of the second pair is > and it reaches the higher margin... { OrderClose(ticket3,Size,Bid,3,Red); OrderClose(ticket4,Size,Ask,3,Red); ticket3=OrderSend(Pair2,OP_BUY,Size,Ask2,5,0,0,"COMPRA segundo par, "+Pair2,3,0,Green); ticket4=OrderSend(Pair1,OP_SELL,Size,Bid1,5,0,0,"VENTA segundo par, "+Pair1,4,0,Red); } } if (stage()==2 && AlreadyOpen()) //if i already closed the other pair with benefits, then i wait for both pairs to come back till the lower margin. { OrderSelect(ticket1, SELECT_BY_TICKET); profit1=OrderProfit(); OrderSelect(ticket2, SELECT_BY_TICKET); profit2=OrderProfit(); margen1=profit1+profit2; OrderSelect(ticket3, SELECT_BY_TICKET); profit3=OrderProfit(); OrderSelect(ticket4, SELECT_BY_TICKET); profit4=OrderProfit(); margen2=profit3+profit4; margenTotal=margen1+margen2; spread1=MarketInfo(Pair1,MODE_SPREAD)*2; spread2=MarketInfo(Pair2,MODE_SPREAD)*2; margenPerdida=PipsTrigger-spread1-spread2-PipsInGain; if (margenTotal<=(margenPerdida*(-1))) //if margin between both pairs reachs the low margin then we close all the orders. { OrderClose(ticket1,Size,Bid,3,Red); OrderClose(ticket2,Size,Ask,3,Red); OrderClose(ticket3,Size,Bid,3,Red); OrderClose(ticket4,Size,Ask,3,Red); } } } MarcaTiempo = NuevaTiempo; } return(0); } bool AlreadyOpen() { bool orden1,orden2,orden3,orden4; for (int i=0;i