Miscellaneous
0
Views
0
Downloads
0
Favorites
Calculator_Forex
//+------------------------------------------------------------------+
//| Calculator_Forex.mq4 |
//| Copyright © 2007, DRKNN |
//| drknn@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, DRKNN"
#property link "drknn@mail.ru"
#property show_inputs
extern double Depozit=0.0;//êàêèì êîëè÷åñòâîì êàïèòàëà áóäåì ðèñêîâàòü
extern double Risk=3.0;//êàêèì êîëè÷åñòâîì êàïèòàëà áóäåì ðèñêîâàòü
extern string t11="------- Äëÿ ðàññ÷¸òà ñòîï-ëîññà ïî ëîòó --------";
extern double Lot=0.2;//ñ êàêèì ëîòîì áóäåì îòêðûâàòü ïîçèöèþ.
extern string t1="------- Äëÿ ðàññ÷¸òà ëîòà ïî ñòîï-ëîññó --------";
extern double StopLoss=15.0;
/*
ôîðìóëà ðàññ÷¸òà ìàêñèìàëüíîãî ñòîï-ëîññà äëÿ óêàçàííîãî ïîëüçîâàòåëåì ëîòà:
SL_PNT=normRisk*normDepozit/PointPrise/Lot;
*/
//+------------------------------------------------------------------+
//| Íà÷àëî ðàáîòû ñêðèïòà |
//+------------------------------------------------------------------+
int start()
{
string SMB=Symbol();
double normRisk=0;//ñîäåðæèò íîðìàëèçîâàííûé ðèñê
double SL_PNT=0;//ñòîï-ëîññ â ïóíêòàõ
double MinLot=MarketInfo(SMB,MODE_MINLOT);//ìèíèìàëüíûé ðàçìåð ëîòà
double MaxLot=MarketInfo(SMB,MODE_MAXLOT);//ìàêñèìàëüíûé ðàçìåð ëîòà
double ryn_Lot=0;//ðàññ÷èòûâàåìûé ëîò äëÿ óêàçíààíîãî ïîëüçîâàòåëåì ñòîï-ëîññà
double LotStep=MarketInfo(SMB,MODE_LOTSTEP);//øàã èçìåíåíèÿ ëîòà
double normDepozit=0;
int TipInstrumenta=10000;
double PointPrise=0;
string SMB1,SMB2;
double BazCours=0;// êóðñ áàçîâîé âàëþòû ïî îòíîøåíèþ ê äîëëàðó
double ryn_PointPrise=0;//ñòîèìîñòü ïóíêòà ïðè ìèíèìàëüíîì ëîòå
double ryn_SL=0;//ñòîï-ëîññ äëÿ ìèíèìàëüíîãî ëîòà
int MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);//Ìèíèìàëüíî äîïóñòèìûé óðîâåíü ñòîï-ëîññà (òåéê-ïðîôèòà) â ïóíêòàõ
string t1="=============================";
//------------------------------------------------------------------------------------------------------------------------
Alert (t1);
//-------- Çàùèòà îò äóðàêà ----------------------
if(Risk<=0){
Alert(" Îøèáêà! Risk äîëæåí áûòü áîëüøå íóëÿ.");
return(0);
}
if(Lot<MinLot){
Alert(" Îøèáêà! Lot íå äîëæåí áûòü ìåíüøå ",MinLot);
return(0);
}
if(Lot>MaxLot){
Alert(" Îøèáêà! Lot íå äîëæåí áûòü áîëüøå ",MaxLot);
return(0);
}
if(StopLoss<MinLevel){
Alert(" Îøèáêà! StopLoss íå äîëæåí áûòü ìåíüøå ",MinLevel," ïóíêòîâ");
return(0);
}
if(Lot>=MinLot && Risk!=0 && StopLoss>=MinLevel){
//------ íîðìàëèçóåì äåïîçèò ------------
if(Depozit==0){
normDepozit=AccountBalance();//Áàëàíñ ñ÷¸òà
}
if(Depozit>0){
normDepozit=Depozit;
}
//------ íîðìàëèçóåì ïðîöåíò ðèñêà ------------
normRisk=Risk/100;
// ------- ñìîòðèì, Risk," ïðîöåíòîâ îò äåïîçèòà ýòî ñêîëüêî â öåíòàõ -----------------
double normRiskPersent=NormalizeDouble(normDepozit*normRisk,2);
// --------- âû÷èñëÿåì êàêàÿ ïàðà (ïðÿìàÿ, îáðàòíàÿ, êðîññ) --------------
TipInstrumenta=StringFind( SMB,"USD",0);
//------ èçâëåêàåì èìÿ ïåðâîé âàëþòíîé ïàðû ------------
SMB1=StringSubstr(SMB,0,3); //áàçîâàÿ âàëþòà
//SMB2=StringSubstr(SMB,3,3);// âàëþòà êîòèðîâàíèÿ.
// ------- òåêóùàÿ êîòèðîâêà áàçîâîé âàëþòû ê äîëëàðó ÑØÀ -------------
BazCours=MarketInfo(SMB1+"USD",MODE_BID);
//Alert("Tåêóùàÿ êîòèðîâêà áàçîâîé âàëþòû ê äîëëàðó ÑØÀ = ",BazCours);
// --------- ðàññ÷èòûâàåì ñòîèìîñòü ïóíêòà -------------------------
if(TipInstrumenta==3){//ïàðà ïðÿìàÿ, íàïð. EurUsd
PointPrise=1000000*Lot/10*Point;
ryn_PointPrise=1000000*MinLot/10*Point;//ñòîèìîñòü ïóíêòà ïðè ìèíèìàëüíîì ëîòå
}
if(TipInstrumenta==0){//ïàðà îáðàòíàÿ, íàïð. UsdJpy
PointPrise=1000000*Lot/10*Point/Bid;
ryn_PointPrise=1000000*MinLot/10*Point/Bid;//ñòîèìîñòü ïóíêòà ïðè ìèíèìàëüíîì ëîòå
}
if(TipInstrumenta==-1){//Êðîññ-ïàðà, íàïð EurJpy
PointPrise=1000000*Lot/10*Point*BazCours/Bid;
ryn_PointPrise=1000000*MinLot/10*Point*BazCours/Bid;
}
// ----- íîðìàëèçóåì ïîëó÷åííóþ ñòîèìîñòü ïóíêòà ------
PointPrise=NormalizeDouble(PointPrise,2);
ryn_PointPrise=NormalizeDouble(ryn_PointPrise,2);
// ========== âû÷èñëÿåì ìàêñèìàëüíûé ñòîï-ëîññ äëÿ óêàçàííîãî ïîëüçîâàòåëåì ëîòà =========================================
//------ ñìîòðèì, ñêîëüêî ðàç ìèíèìàëüíûé ëîò óêëàäûâàåòñÿ â ïîëüçîâàòåëüñêîì -------------
double iMinLot=MinLot;
int SchLots=0;//ñêîëüêî ìèíèìàëüíûõ ëîòîâ óêëàäûâàåòñÿ â ïîëüçîâàòåëüñêîì
if(Lot==MinLot){SchLots=1;}
else if(Lot>MinLot){
while(iMinLot<Lot){
iMinLot=iMinLot+LotStep;
SchLots++;
}
}
//òåïåðü âû÷èñëÿåì óðîâåíü ñòîï-ëîññà
SL_PNT=normRisk*normDepozit/PointPrise/SchLots;
SL_PNT=NormalizeDouble(SL_PNT,0);
// ========== âû÷èñëÿåì ìàêñèìàëüíûé ëîò äëÿ óêàçàííîãî ïîëüçîâàòåëåì ñòîï-ëîññà =========================================
// ----- ñìîòðèì, êàêîé ñòîï-ëîññ ïîëó÷èòñÿ ïðè ìèíèìàëüíîì ëîòå -------------
double jj=1;
ryn_SL=normRisk*normDepozit/ryn_PointPrise/jj;
ryn_SL=NormalizeDouble(ryn_SL,0);
// ----- ñìîòðèì, ñêîëüêî ðàç ïîëüçîâàòåëüñêèé ñòîï-ëîññ óìåùàåòñÿ â ñòîï-ëîññå ìèíèìàëüíîãî ëîòà
int SchSL=0;//ñêîëüêî ïîëüçîâàòåëüñêèõ ñòîï-ëîññîâ óìåùàåòñÿ â ìàêñèìàëüíîì ñòîï-ëîññå ïðè ìèíèìàëüíîì ëîòå
if(StopLoss==ryn_SL){SchSL=1;}
else if(StopLoss<ryn_SL){
double iStopLoss=StopLoss;
while(iStopLoss<ryn_SL){
iStopLoss=iStopLoss+iStopLoss;
SchSL++;
}
}
//----- òåïåðü ïðîñ÷èòûâàåì èñêîìûé ëîò -------------
ryn_Lot=SchSL*MinLot;
// ------------ âûâîäèì ðåçóëüòàòû ----------------
Alert("Ìèíèìàëüíî äîïóñòèìûé óðîâåíü ñòîï-ëîññà = ",MinLevel," ïóíêòîâ");
Alert("Ñòîèìîñòü ïóíêòà ïðè ìèíèìàëüíîì ",MinLot," ëîòå = ",ryn_PointPrise," $");
Alert("Ñòîèìîñòü ïóíêòà ïðè ëîòå ",Lot," = ",PointPrise," $");
Alert(Risk," ïðîöåíòîâ îò äåïîçèòà = ",normRiskPersent," $");
Alert("Äåíåã íà ñ÷åòó = ",normDepozit," $");
Alert("--------");
Alert("Ìàêñèìàëüíûé ëîò = ",ryn_Lot);
Alert(SMB," Ðàññ÷¸ò ëîòà äëÿ ñòîï-ëîññà = ",StopLoss," ïóíêòîâ :");
Alert("--------");
Alert("Ìàêñèìàëüíûé ñòîï-ëîññ = ",SL_PNT," ïóíêòîâ");
Alert(SMB," Ðàññ÷¸ò ñòîï-ëîññà äëÿ ëîòà = ",Lot," :");
Alert (t1);
}
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
---