Kod: Zaznacz cały
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern string Rynek = "EURUSD";
int Ticket1;
int Ticket2;
int Ticket3;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int OpenBuyOrders = 0;
int OpenSellOrders = 0;
int OpenBuyStopOrders = 0;
int OpenSellStopOrders = 0;
int Pozycje_rynkowe = 0;
int Pozycje_oczekujace = 0;
double lastopentime=0;
int lastopenedordertype;
double lastorderprice2;
//**********************************************************************************************************
// zliczanie pozycji rynkowych oraz pozycji oczekujacych
//**********************************************************************************************************
int cnt;
for(cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_BUY && OrderSymbol()==Rynek)
OpenBuyOrders++;
if (OrderType() == OP_SELL && OrderSymbol()==Rynek)
OpenSellOrders++;
if (OrderType() == OP_BUYSTOP && OrderSymbol()==Rynek)
OpenBuyStopOrders++;
if (OrderType() == OP_SELLSTOP && OrderSymbol()==Rynek)
OpenSellStopOrders++;
}
Pozycje_rynkowe = OpenBuyOrders + OpenSellOrders;
Pozycje_oczekujace = OpenBuyStopOrders + OpenSellStopOrders;
//**********************************************************************************************************
//okreslenie kryteriow handlowych
//**********************************************************************************************************
//wskaźniki vegasowe
double greenveg1 = iCustom(Symbol(),NULL,"vegasik",0,1);
double greenveg2 = iCustom(Symbol(),NULL,"vegasik",0,2);
double greenveg3 = iCustom(Symbol(),NULL,"vegasik",0,3);
double blueveg1 = iCustom(Symbol(),NULL,"vegasik",1,1);
double blueveg2 = iCustom(Symbol(),NULL,"vegasik",1,2);
double blueveg3 = iCustom(Symbol(),NULL,"vegasik",1,3);
double bluevegD2 = iCustom(Symbol(),NULL,"vegasik",2,1);//=======
double bluevegD3 = iCustom(Symbol(),NULL,"vegasik",3,1);//powyzej
double bluevegD4 = iCustom(Symbol(),NULL,"vegasik",4,1);//=======
double bluevegD5 = iCustom(Symbol(),NULL,"vegasik",5,1);//======
double bluevegD6 = iCustom(Symbol(),NULL,"vegasik",6,1);// ponizej
double bluevegD7 = iCustom(Symbol(),NULL,"vegasik",7,1);//======
string Trend_upV = "false";
string Trend_downV = "false";
if(greenveg1 >= greenveg2 && blueveg1 >= blueveg2)
{
Trend_upV = "true";
}
if(greenveg1 <= greenveg2 && blueveg1 <= blueveg2)
{
Trend_downV = "true";
}
// wskaźnik slope direction line
double SDL1 = iCustom(Symbol(),0,"direction line",0,1);//uptrend
double SDL2 = iCustom(Symbol(),0,"direction line",1,1);//downtrend
string Trend_upS = "false";
string Trend_downS = "false";
if(SDL1 > 0 && SDL1 != EMPTY_VALUE)
{
Trend_upS = "true";
}
if(SDL2 > 0 && SDL2 != EMPTY_VALUE)
{
Trend_downS = "true";
}
//===============================================================================================================
//==============================================================================================================
if(Pozycje_rynkowe == 0)
{
//=============================SELL===============================================//
if(iClose(Rynek,PERIOD_H1,2) > greenveg2 && iClose(Rynek,PERIOD_H1,1) < greenveg1 && iClose(Rynek,PERIOD_H1,1) > bluevegD5)//jezeli zamkniecie w pierwszej strefie
{
if(Trend_downV == "true" && Trend_downS == "true")
{
Ticket1 = OrderSend(Rynek,OP_SELL,1,Bid,5,0,0);
Ticket2 = OrderSend(Rynek,OP_SELL,1,Bid,5,0,0);
Ticket3 = OrderSend(Rynek,OP_SELL,1,Bid,5,0,0);
}
}
if(iClose(Rynek,PERIOD_H1,2) > greenveg2 && iClose(Rynek,PERIOD_H1,1) < bluevegD5 && iClose(Rynek,PERIOD_H1,1) > bluevegD6)//jezeli zamkniecie w drugiej strefie
{
// Print("otwórz2",Trend_downV);
if(Trend_downV == "true" && Trend_downS == "true")
{
Ticket1 = OrderSend(Rynek,OP_SELL,1,Bid,5,0,0);
Ticket2 = OrderSend(Rynek,OP_SELL,1,Bid,5,0,0);
}
}
if(iClose(Rynek,PERIOD_H1,2) > greenveg2 && iClose(Rynek,PERIOD_H1,1) < bluevegD6 && iClose(Rynek,PERIOD_H1,1) > bluevegD7)//jezeli zamkniecie w trzeciej strefie
{
//Print("otwórz3",Trend_downV);
if(Trend_downV == "true" && Trend_downS == "true")
{
Ticket1 = OrderSend(Rynek,OP_SELL,1,Bid,5,0,0);
}
}
//==================================BUY=====================================//
if(iClose(Rynek,PERIOD_H1,2) < blueveg2 && iClose(Rynek,PERIOD_H1,1) > blueveg1 && iClose(Rynek,PERIOD_H1,1) < bluevegD2)//jezeli zamkniecie w pierwszej strefie
{
if(Trend_upV == "true" && Trend_upS == "true")
{
Ticket1 = OrderSend(Rynek,OP_BUY,1,Ask,5,0,0);
Ticket2 = OrderSend(Rynek,OP_BUY,1,Ask,5,0,0);
Ticket3 = OrderSend(Rynek,OP_BUY,1,Ask,5,0,0);
}
}
if(iClose(Rynek,PERIOD_H1,2) < blueveg2 && iClose(Rynek,PERIOD_H1,1) > bluevegD2 && iClose(Rynek,PERIOD_H1,1) < bluevegD3)//jezeli zamkniecie w drugiej strefie
{
if(Trend_upV == "true" && Trend_upS == "true")
{
Ticket1 = OrderSend(Rynek,OP_BUY,1,Ask,5,0,0);
Ticket2 = OrderSend(Rynek,OP_BUY,1,Ask,5,0,0);
}
}
if(iClose(Rynek,PERIOD_H1,2) < blueveg2 && iClose(Rynek,PERIOD_H1,1) > bluevegD3 && iClose(Rynek,PERIOD_H1,1) < bluevegD4)//jezeli zamkniecie w trzeciej strefie
{
if(Trend_upV == "true" && Trend_upS == "true")
{
Ticket1 = OrderSend(Rynek,OP_BUY,1,Ask,5,0,0);
}
}
}
//===============================================================================================================
//==============================================================================================================
if(Pozycje_rynkowe == 3)//oznacza to ze zawarte zostaly w pierwszej strefie,
{
for(cnt = 0; cnt < OrdersTotal(); cnt++) {
if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) && OrderOpenTime()>lastopentime && OrderType() <= 1) {
lastopentime = OrderOpenTime();
lastopenedordertype = OrderType();
lastorderprice2 = OrderOpenPrice();
}
}//for
if(lastopenedordertype == 0){//dla BUY ||
if(iClose(Rynek,PERIOD_H1,1) > bluevegD2 && iClose(Rynek,PERIOD_H1,1) < bluevegD3){//jezeli II strefa
//zamknij ostatnia pozycje
if(OrderSelect(Ticket1,SELECT_BY_TICKET)==true){
OrderClose(Ticket1,1,Bid,3);
}
}
if(iClose(Rynek,PERIOD_H1,1) > bluevegD3 && iClose(Rynek,PERIOD_H1,1) < bluevegD4){//jezeli III strefa
//zamknij ostatnie dwie pozycje
if(OrderSelect(Ticket1,SELECT_BY_TICKET)==true){
OrderClose(Ticket1,1,Bid,3);
}
if(OrderSelect(Ticket2,SELECT_BY_TICKET)==true){
OrderClose(Ticket2,1,Bid,3);
}
}
if(iClose(Rynek,PERIOD_H1,1) > bluevegD4){//jezeli IV strefa
//zamknij wszystkie trzy pozycje
if(OrderSelect(Ticket1,SELECT_BY_TICKET)==true){
OrderClose(Ticket1,1,Bid,3);
}
if(OrderSelect(Ticket2,SELECT_BY_TICKET)==true){
OrderClose(Ticket2,1,Bid,3);
}
if(OrderSelect(Ticket3,SELECT_BY_TICKET)==true){
OrderClose(Ticket3,1,Bid,3);
}
}
if(iClose(Rynek,PERIOD_H1,1) < bluevegD5){//Stop loss
if(OrderSelect(Ticket1,SELECT_BY_TICKET)==true){
OrderClose(Ticket1,1,Bid,3);
}
if(OrderSelect(Ticket2,SELECT_BY_TICKET)==true){
OrderClose(Ticket2,1,Bid,3);
}
if(OrderSelect(Ticket3,SELECT_BY_TICKET)==true){
OrderClose(Ticket3,1,Bid,3);
}
}
}
if(lastopenedordertype == 1){//dla SELL
if(iClose(Rynek,PERIOD_H1,1) < bluevegD5 && iClose(Rynek,PERIOD_H1,1) > bluevegD6){//jezeli II strefa
Print("zamknij ostatnia pozycje");
OrderSelect(Ticket1,SELECT_BY_TICKET);
Print("zaznaczyłem=",Ticket1);
OrderClose(Ticket1,1,Bid,3);
}
if(iClose(Rynek,PERIOD_H1,1) < bluevegD6 && iClose(Rynek,PERIOD_H1,1) > bluevegD7){//jezeli III strefa
Print("zamknij ostatnie dwie pozycje");
OrderSelect(Ticket1,SELECT_BY_TICKET);
Print("zaznaczyłem=",Ticket1);
OrderClose(Ticket1,1,Bid,3);
OrderSelect(Ticket2,SELECT_BY_TICKET);
OrderClose(Ticket2,1,Bid,3);
}
if(iClose(Rynek,PERIOD_H1,1) < bluevegD7){//jezeli IV strefa
Print("zamknij ostatnie trzy pozycje");
OrderSelect(Ticket1,SELECT_BY_TICKET);
Print("zaznaczyłem=",Ticket1);
OrderClose(Ticket1,1,Bid,3);
OrderSelect(Ticket2,SELECT_BY_TICKET);
OrderClose(Ticket2,1,Bid,3);
OrderSelect(Ticket3,SELECT_BY_TICKET);
OrderClose(Ticket3,1,Bid,3);
}
if(iClose(Rynek,PERIOD_H1,1) > bluevegD2){
Print("Stop loss");
if(OrderSelect(Ticket1,SELECT_BY_TICKET)==true){
Print("zaznaczyłem=",Ticket1);
OrderClose(Ticket1,1,Bid,3);
}
if(OrderSelect(Ticket2,SELECT_BY_TICKET)==true){
OrderClose(Ticket2,1,Bid,3);
}
if(OrderSelect(Ticket3,SELECT_BY_TICKET)==true){
OrderClose(Ticket3,1,Bid,3);
}
}
}
}
Zalaczam wiekosc kodu. Bardzo prosze o pomoc. Bede wdzieczny. Ticket jest zmienna globalna i ponadto jest integer'em, jak widzisz. Pozdrawiam[/code]