Orders Execution
0
Views
0
Downloads
0
Favorites
star_3
// êîäèðîâàë Martingeil c ôîðóìà ÄÖ http://www.fx4u.ru
// ïî ñèñòåìå TC âíåøíèé áàð FxProfitCross ñ ôîðóìà http://goodservice.su/forum/41-3545-1
//===============================================================================================================================
#property copyright "Copyright © 2009,10, Martingeil ;)"
#property link "fx.09@mail.ru"
extern int magic = 999;
extern string ð="-===Kazakstan treider===-:";
extern string b=" ðàñ÷åòû Ñòîï-Ëîññ :";
extern int SLbars = 6;//íà ñêîëüêèõ áàðàõ áóäåò ïðîèçâîäèòñÿ ïîèñê íàèìåíüøåãî ëîó, è íàèáîëüøåãî õàÿ äëÿ âûñòàâëåíèÿ ñòîïà
extern double StopLoss = 30.0;//ñòîï îò óðîâíÿ ëîó è õàé
extern string ñ=" ðàñ÷åòû Òåéêïðîôèòà :";
extern double TakeProfit = 10.0;//ðàññòîÿíèå òåéêïðîôèòà, îò óðîâíÿ ñåðåäèíû, ðàñ÷åò íàèìåíüøåãî ëîó + íàèáîëüøåãî õàÿ /2
//òåéê åñëè ïîñòàâèòü áîëüøåå çíà÷åíèå îí áóäåò îòíèìàòü îò ñåðåäèíû õàÿ è ëîó, òî åñòü ÷òî áû ñîêðàòèòü óðîâåíü òåéêà
//íàäî ñòàâèòü çíà÷åíèå áîëüøå, åñëè =50 çíà÷èò òåéê áóäåò áëèçêî ê îòêðûòèþ, åñëè ïîñòàâèòü =0 òî óðîâåíü òåéêà áóäåò
//íà óðîâíå ñåðåäèíû, ìåæäó õàé è ëîó.
extern string d=" ðàñ÷åòû ýêñòðèìóìà õàé è ëîó :";
extern int hibar = 100; //ñêîëüêî áàðîâ áóäåò ïðîñìàòðèâàòüñÿ, äëÿ ïîèñêà íàèáîëüøåãî çíà÷åíèÿ Õàÿ ôèëüòð
extern int lobar = 100; //ñêîëüêî áàðîâ áóäåò ïðîñìàòðèâàòüñÿ, äëÿ ïîèñêà íàèìåíüøåãî çíà÷åíèÿ Ëîó ôèëüòð
extern int zone = 20; //çîíà ðàññòîÿíèå â ïóíêòàõ îò õàÿ è ëîó ôèëüòð
extern int fohmula5 = 5; //formula >=5 åñëè áîëüøå çíà÷åíèå ïðè âû÷èñëåíèè ñâå÷è òî îòêðûâàåì îðäåð
extern string a=" ëîò :";
extern double Lots = 0.1; //ñòàðòîâûé ëîò
extern double MaximumRisk = 0.1;//ðèñê ëîòà
extern double DecreaseFactor = 3.0;
extern double balans = 1000;//áàëàíñ ðåèíâåñòèðîâàíèÿ
double spread;
//===============================================================================================================================
int init() {
spread = MarketInfo(Symbol(), MODE_SPREAD);
return (0);}
int deinit() {
return (0);}
//===============================================================================================================================
double LotsOptimized() {
double minlot = MarketInfo(Symbol(), MODE_MINLOT);
double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
double lot = Lots;
int orders = OrdersHistoryTotal();
int losses = 0;
lot = NormalizeDouble(AccountFreeMargin() * MaximumRisk / balans, 2);
if (DecreaseFactor > 0.0) {
for (int i = orders - 1; i >= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == FALSE) {
Print("Error in history!");
break;
}
if (OrderSymbol() != Symbol() || OrderType() > OP_SELL) continue;
if (OrderProfit() > 0.0) break;
if (OrderProfit() < 0.0) losses++;
}
if (losses > 1) lot = NormalizeDouble(lot - lot * losses / DecreaseFactor, 2);
}
if(lot < minlot) lot = minlot;
if(lot > maxlot) lot = maxlot;
return (lot);}
//===============================================================================================================================
int start() {
double hi_100,lo_100;
int ticket;
int total;
int filt;
int op1,op2,op3;
double stopB,stopS,SLB,SLS;
double TP,TPB,TPS;
hi_100 = High[iHighest(Symbol(), 0, MODE_HIGH, hibar, 0)]; //ïîèñê õàÿ íàèáîëüøåãî çíà÷åíèÿ
lo_100 = Low [iLowest (Symbol(), 0, MODE_LOW, lobar, 0)]; //ïîèñê ëîó íàèìåíüøåãî çíà÷åíèÿ
if (Bid < lo_100 + zone * Point){filt = 1;}//áàé ôèëüòð
else if (Bid > hi_100 - zone * Point){filt =-1;}//ñåëë ôèëüòð
TP = (hi_100+lo_100)/2.0; //âû÷èñëÿåì ñåðåäèíó ìåæäó õàé è ëîó
TPB = TP-TakeProfit*Point; //òåéê äëÿ áàé îò ñåðåäèíû õàÿ è ëîó
TPS = TP+TakeProfit*Point; //òåéê äëÿ ñåëë îò ñåðåäèíû õàÿ è ëîó
stopS = High[iHighest(Symbol(), 0, MODE_HIGH, SLbars, 0)]; //îïðåäåëÿåì óðîâåíü ñòîïà äëÿ ñåëë
stopB = Low [iLowest (Symbol(), 0, MODE_LOW, SLbars, 0)]; //îïðåäåëÿåì óðîâåíü ñòîïà äëÿ áàé
SLB = stopB - StopLoss*Point; //ñòîï îò ëîó äëÿ áàé
SLS = stopS + StopLoss*Point; //ñòîï îò õàÿ äëÿ ñåëë
if (High[2]>High[1]&&Low[2]<Low[1]&&Bid>High[1]){op1=1;}
else if (High[2]<High[1]&&Low[2]>Low[1]&&Bid<Low[1]){op1=-1;}
if (High[1]>High[2]&& Low[1]<Low[2]&&Bid>High[1]){op2=1;}
else if (High[1]<High[2]&& Low[1]>Low[2]&&Bid<Low[1]){op2=-1;}
if((((High[1]-Low[1])/(High[1]-Close[1]))>=fohmula5&&Bid>High[1]) ||(((High[1]-Low[1])/(Open[1]-Close[1]))>=fohmula5&&Bid>High[1])){op3=1;}
else if((((High[1]-Low[1])/(High[1]-Close[1]))>=fohmula5&&Bid>Low[1]) ||(((High[1]-Low[1])/(Open[1]-Close[1]))>=fohmula5&&Bid>Low[1])){op3=-1;}
//===============================================================================================================================
total=OrdersTotal();
if(total<1){
if (AccountFreeMargin() < 1000.0 * Lots) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return (0);}
if (filt==1){ //ñèãíàë ôèëüòðà 100 áàðîâ äëÿ áàé îðäåðà
if ((op1==1)||(op2==1)||(op3==1)){
ticket = OrderSend(Symbol(), OP_BUY, LotsOptimized(),NormalizeDouble(Ask,Digits), 3, SLB, TPB, "", magic, 0, Lime);
if(ticket>0){
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());}
else Print("Error opening BUY order : ",GetLastError());return(0);}}
if (filt==-1){
if ((op1==-1)||(op2==-1)||(op3==-1)){
ticket = OrderSend(Symbol(), OP_SELL, LotsOptimized(), NormalizeDouble(Bid,Digits), 3, SLS, TPS, "", magic, 0, Red);
if(ticket>0){
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());}
else Print("Error opening SELL order : ",GetLastError());return(0);}}}return(0);}
//===============================================================================================================================
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---