Мега сателит
#property copyright "skype atomrus1993"
#property link      "e-mail andrey@matveevs.ru"

extern string S1           = "Общие параметры";
extern int    Magic        = 26082012;	//магик номер
extern int    Slippage     = 20;		//максимальное проскальзывание в пунктах
extern bool   fix_take     = false;
extern bool   reverse      = false;
extern int    TakeProfit   = 60;		//тейк профит
extern int    StopLoss     = 20;		//стоп лосс 
extern double Lot          = 0.1;		//первоначальный лот
extern int    LotDigits    = 2;			//кол-во цифр после запятой для лота
extern string Comments     = "Комментарий";
extern double Koef         = 2;			//коэффициент увеличение лота при пройгрыше

// go to trading ))
int start(){

	if (getCountOpenOrder() > 0){
		return(0);
	}

	double lot = 0;
	
	int buySig = 0, sellSig = 1;

	lot = lastProfit() ? Lot : lastLot() * Koef;
	lot = getNormalizeLot(lot);
	
	if (reverse){
	   buySig = 1;
	   sellSig = 0;
	}
	
	if (iAO(Symbol(), 0, 1) > 0 && iAO(Symbol(), 0, 2) < 0){
	   openOrder(buySig, lot);
	} else if (iAO(Symbol(), 0, 1) < 0 && iAO(Symbol(), 0, 2) > 0){
	   openOrder(sellSig, lot);
	}

	return(0);
}

// Open Order
int openOrder(int type, double lot){
	int result = -1;

	double TP, SL;

	for (int i = 1; i = 0; i--){
		if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber () == Magic && OrderSymbol () == Symbol ()){
			if (time < OrderOpenTime()){
				profit 	= OrderProfit();
			}
		}
	}

	return profit >= 0 ? true : false;
}
// Лот последней сделки
double lastLot(){
	int time = -1;
	double lot = 0;

	for (int i = OrdersHistoryTotal() - 1; i >= 0; i--){
		if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber () == Magic && OrderSymbol () == Symbol ()){
			if (time < OrderOpenTime()){
				lot 	= OrderLots();
			}
		}
	}

	return lot;
}
// Получает кол-во открытых позиций
int getCountOpenOrder(){
	int openOrder = 0;

	for (int i = OrdersTotal() - 1; i >= 0; i--){
		if (OrderSelect(i, SELECT_BY_POS) && OrderMagicNumber() == Magic && OrderSymbol() == Symbol()){
			openOrder++;
		}
	}

	return openOrder;
}
// получает нормальный лот
double getNormalizeLot(double lot){
	if (lot < MarketInfo(Symbol(), MODE_MINLOT)){
		lot = MarketInfo(Symbol(), MODE_MINLOT);
	} else if (lot > MarketInfo(Symbol(), MODE_MAXLOT)){
		lot = MarketInfo(Symbol(), MODE_MAXLOT);
	}

	lot = NormalizeDouble (lot, LotDigits);

	return lot;
}