воскресенье, 27 января 2008 г.

Открытые коды торговых советника для форекс - KingMinute

Все доброе время суток решил выложить собственные советники для Meta Trader 4.
Разрабатывал я их давно, дают даже не плохой результат торговли. Они прошли обширное тестирование трейдерами.
Вероятность прибыльных сделок от 60%-80%
Но все же они иногда лажают, хотя если максимально хорошо настроить, есть вероятность, что будут давать прибыль.
Вот исходники кому интересно
Самая моя большая гордость это KingMinute
Действительно не плох, хотя не идеален

Вот краткое описание:

Советник KingMinute для MT4

Основные положение:

2006

Советник KingMinute был разработан для валютной пары EURUSD, для временных интервалов M1(рекомендовано) и M5 c встроенной функцией капитализации.

Есть функция отсылка e-mail, при запуски, выключении и постановки позиции

Что бы подключить эту функцию настройте работу MT4 с почтой.

Сервис->Настройки->вкладка Почта

Валюты которые возможное подходят для торговли этим советником, но не тестировались – GBPUSD, USDCHF, USDJPY

Свойства советника:

Lots – Начальный размер лота

TakeProfit – уровень выхода из рынка при прибили

StopLoss – уровень выхода из рынка при убытке

TrailingStop – Переход в без убыток, и заработок дополнительных пунктов

Podushka – Минимальное количество свободной маржи для увеличения количества лотов

UseH1Parabolic – Учитывание, часового параболика

ID_MagicNum – Индификатор, магическое число, нужно для того, если у вас в одном MT4, запущены несколько советников, они не будут путались где чей ордер.

KapitalFunc – Функция капитализации, автоматическое наращивание прибыли. Если

KatitalFunc равен false, тогда все лоты будут равны параметру Lots

Для корректной работы советников необходимо:

1. Скопировать файлы советников в папку Program files\MT4\experts и файл индикаторов в папку Program files\MT4\experts\indicators

2. К открывшемуся графику присоединить советник

3. И разрешить торговать советнику, нажав кнопку Разрешить советники

4. Все советник готов и уже торгует (мордочка должна улыбаться)


Вот и его исходный код
//+-----------------------------------------------------------------------------------+
//| KingMinute.mq4 |
//| jthotbox@gmail.com |
//| |
//+-----------------------------------------------------------------------------------+
#property copyright "jthotbox@gmail.com © 2006" // +
#property link "http://jthotblog.blogspot.com/" // +
//------------------------------------------------------------------------------------+

// Использовать ли капитализацию, если "нет",-используем Lots
extern double Lots = 0.1; //
extern int TakeProfit = 20; // recomended no more than 20
extern int StopLoss = 45; // do not use s/l
extern int TrailingStop = 10;
extern double Podushka = 500;
//extern int CriticalMinus= 20;
extern bool UseH1Parabolic=true;
double slippage = 3; // Could be higher with some brokers
string nameEA = "KingMinute"; // To "easy read" which EA place an specific order
int Korelation = 10;


extern int ID_MagicNum=99919;
extern bool KapitalFunc = true;


double macdHistCurrent, macdHistPrevious, macdSignalCurrent, macdSignalPrevious;
double stochHistCurrent, stochHistPrevious, stochSignalCurrent, stochSignalPrevious;
double sarCurrent, sarPrevious, momCurrent, momPrevious,MA, MAprevious,sarCurrentH, sarPreviousH;
double realTP, realSL;
bool isBuying = false, isSelling = false, isClosing = false;
int cnt, ticket;
double DecreaseFactor = 3;
bool searchID=false;
int ts=10;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
SendMail("KingMinute","Alert: Work "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);

return(0);
}

//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {

SendMail("KingMinute","Alert: Exit "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);

return(0);
}
double LotsOptimized()
{
double lot=Lots;
int orders=HistoryTotal(); // history orders total
int losses=0; // number of losses orders without a break
//---- select lot size


lot=NormalizeDouble(AccountFreeMargin()/(Podushka*Korelation),1);
//---- calcuulate number of losses orders without a break
if(DecreaseFactor>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) break;
if(OrderProfit()<0) losses++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//---- return lot size
if(lot<0.1) lot=0.1;
if (KapitalFunc==false) lot=Lots;
return(lot);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {

double lot;
// Check for invalid bars and takeprofit
if(Bars < 360) {
Print("Not enough bars for KingMinute");
return(0);
}
calculateIndicators(); // Calculate indicators' value

// Control open trades
int totalOrders = OrdersTotal();
int numPos = 0;

for(cnt=0; cnt OrderSelect(cnt, SELECT_BY_POS);
if(OrderSymbol() == Symbol() && OrderType() <= OP_SELL && OrderMagicNumber() == ID_MagicNum) { // only look for this symbol, and only orders from this EA
numPos++;
if(OrderType() == OP_BUY) { // Check for close signal for bought trade
if(isSelling || isClosing) {
OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Violet); // Close bought trade
Print("Closing BUY order");
}

// if (CriticalMinus*Point<=OrderOpenPrice()-Ask) TrailingStop=MathRound(TrailingStop/2);

if(TrailingStop > 0) { // Check trailing stop
if(Bid-OrderOpenPrice() > TrailingStop*Point) {
if(OrderStopLoss() < (Bid - TrailingStop*Point)) {
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Blue);
Print("Modifying BUY order");
}
}
}
} else { // Check sold trade for close signal
if(isBuying || isClosing) {
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Violet);
Print("Closing SELL order");
}

// if (CriticalMinus*Point<=Bid-OrderOpenPrice()) TrailingStop=MathRound(TrailingStop/2);

if(TrailingStop > 0) { // Control trailing stop
if(OrderOpenPrice() - Ask > TrailingStop*Point) {
if(OrderStopLoss() == 0 || OrderStopLoss() > Ask + TrailingStop*Point) {
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Red);
Print("Modifying SELL order");
}
}
}
}
}
}

///-------------------------------------------------------
////////////////////Устанавливаем размер лота по состоянию депозита/////
///-------------------------------------------------------
// If there is no open trade for this pair and this EA
if(numPos < 1) {
if(AccountFreeMargin() < 1000*Lots) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
HideTestIndicators(true);
if (TimeYear(CurTime())<=2006 && TimeMonth(CurTime())<=8&& TimeDay(CurTime())<=22){ //kvota po date
//if (AccountNumber()==44448){


totalOrders = OrdersTotal();
if(totalOrders==0)
{
MakePosition();
}
else
{

for(cnt=0; cnt {
OrderSelect(cnt, SELECT_BY_POS);
if(OrderMagicNumber()==ID_MagicNum)
searchID=true;
}
if (searchID==false){
MakePosition();
}
searchID=false;
}

}//kvota po date
//}//po accounty

}
return(0);

}

void calculateIndicators() { // Calculate indicators' value
macdHistCurrent = iMACD(NULL,0,12,26,9,PRICE_OPEN,MODE_MAIN,0);
macdHistPrevious = iMACD(NULL,0,12,26,9,PRICE_OPEN,MODE_MAIN,1);
macdSignalCurrent = iMACD(NULL,0,12,26,9,PRICE_OPEN,MODE_SIGNAL,0);
macdSignalPrevious = iMACD(NULL,0,12,26,9,PRICE_OPEN,MODE_SIGNAL,1);
stochHistCurrent = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0);
stochHistPrevious = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1);
stochSignalCurrent = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);
stochSignalPrevious = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
sarCurrent = iSAR(NULL,0,0.02,0.2,0); // Parabolic Sar Current
sarPrevious = iSAR(NULL,0,0.02,0.2,1); // Parabolic Sar Previuos
momCurrent = iMomentum(NULL,0,14,PRICE_OPEN,0); // Momentum Current
momPrevious = iMomentum(NULL,0,14,PRICE_OPEN,1); // Momentum Previous
sarCurrentH = iSAR(NULL,60,0.02,0.2,0);
sarPreviousH = iSAR(NULL,60,0.02,0.2,1);
// Check for BUY, SELL, and CLOSE signal
if (UseH1Parabolic){
isBuying = (sarCurrent<=High[0] && sarPrevious>sarCurrent&& sarPreviousH>sarCurrentH && momCurrent<100 && macdHistCurrent isSelling = (sarCurrent>=Low[0] && sarPrevious100 && macdHistCurrent>macdSignalCurrent && stochHistCurrent>61);
isClosing = false;
}else{
isBuying = (sarCurrent<=High[0] && sarPrevious>sarCurrent&& momCurrent<100 && macdHistCurrent isSelling = (sarCurrent>=Low[0] && sarPrevious100 && macdHistCurrent>macdSignalCurrent && stochHistCurrent>61);
isClosing = false;
}


}

void MakePosition(){

TrailingStop=ts;
if(isBuying && !isSelling && !isClosing) { // Check for BUY entry signal
if(StopLoss > 0)
realSL = Ask - StopLoss * Point;
if(TakeProfit > 0)
realTP = Ask + TakeProfit * Point;

ticket = OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,slippage,realSL,realTP,nameEA+" - Magic: "+ID_MagicNum+" ",ID_MagicNum,0,Green); // Buy
SendMail("KingMinute","Alert: Opened long position "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
Print("KingMinute - Opened long position");




if(ticket < 0) {
Print("OrderSend (" + nameEA + ") failed with error #" + GetLastError());
SendMail("KingMinute","OrderSend (" + nameEA + ") failed with error #" + GetLastError()+"@"+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);

} else Print("Trading: Buying");

}

if(isSelling && !isBuying && !isClosing) { // Check for SELL entry signal
if(StopLoss > 0)
realSL = Bid + StopLoss * Point;
if(TakeProfit > 0)
realTP = Bid - TakeProfit * Point;

ticket = OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,slippage,realSL,realTP,nameEA+" - Magic: "+ID_MagicNum+" ",ID_MagicNum,0,Red); // Sell
SendMail("KingMinute","Alert: Opened short position "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
Print("KingMinute - Opened short position");


if(ticket < 0) {
Print("OrderSend (" + nameEA + ") failed with error #" + GetLastError());
SendMail("KingMinute","OrderSend (" + nameEA + ") failed with error #" + GetLastError()+"@"+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);

} else Print("Trading: Selling");

}
}
//+------------------------------------------------------------------+

А так же советник KingMinuteOrig
//+-----------------------------------------------------------------------------------+
//| KingMinuteOrig.mq4 |
//| jthotbox@gmail.com |
//| http://jthotblog.blogspot.com/ |
//+-----------------------------------------------------------------------------------+
#property copyright "jthotbox@gmail.com © 2006" // +
#property link "http://jthotblog.blogspot.com/" // +
//------------------------------------------------------------------------------------+

// Использовать ли капитализацию, если "нет",-используем Lots
extern double Lots = 0.1; //
extern int TakeProfit = 20; // recomended no more than 20
extern int StopLoss = 45; // do not use s/l
extern int TrailingStop = 10;
extern double Podushka = 300;
//extern int CriticalMinus= 20;
//extern bool UseH1Parabolic=true;
double slippage = 3; // Could be higher with some brokers
string nameEA = "KingMinuteOriginal"; // To "easy read" which EA place an specific order
int Korelation = 10;


extern int ID_MagicNum=99919;
extern bool KapitalFunc = true;


double macdHistCurrent, macdHistPrevious, macdSignalCurrent, macdSignalPrevious;
double stochHistCurrent, stochHistPrevious, stochSignalCurrent, stochSignalPrevious;
double sarCurrent, sarPrevious, momCurrent, momPrevious,sarCurrentH, sarPreviousH;

double macdHistCurrentM5, macdHistPreviousM5, macdSignalCurrentM5, macdSignalPreviousM5;
double stochHistCurrentM5, stochHistPreviousM5, stochSignalCurrentM5, stochSignalPreviousM5;
double sarCurrentM5, sarPreviousM5, momCurrentM5, momPreviousM5;

double realTP, realSL;

bool isBuying1 = false, isSelling1 = false;
bool isBuying5 = false, isSelling5 = false;

bool isClosing = false;
int cnt, ticket;
double DecreaseFactor = 3;
bool searchID=false;
int ts=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
SendMail(nameEA,"Alert: Work "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);

return(0);
}

//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {

SendMail(nameEA,"Alert: Exit "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);

return(0);
}
double LotsOptimized()
{
double lot=Lots;
int orders=HistoryTotal(); // history orders total
int losses=0; // number of losses orders without a break
//---- select lot size


lot=NormalizeDouble(AccountFreeMargin()/(Podushka*Korelation),1);
//---- calcuulate number of losses orders without a break
if(DecreaseFactor>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) break;
if(OrderProfit()<0) losses++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//---- return lot size
if(lot<0.1) lot=0.1;
if (KapitalFunc==false) lot=Lots;
return(lot);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {

double lot;
// Check for invalid bars and takeprofit
if(Bars < 360) {
Print("Not enough bars for KingMinute");
return(0);
}
calculateIndicators(); // Calculate indicators' value

// Control open trades
int totalOrders = OrdersTotal();
int numPos = 0;

for(cnt=0; cnt OrderSelect(cnt, SELECT_BY_POS);
if(OrderSymbol() == Symbol() && OrderType() <= OP_SELL && OrderMagicNumber() == ID_MagicNum) { // only look for this symbol, and only orders from this EA
numPos++;
if(OrderType() == OP_BUY) { // Check for close signal for bought trade

if(isSelling1||isSelling5|| isClosing)
{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);

Print("Closing BUY order");
}


// if (CriticalMinus*Point<=OrderOpenPrice()-Ask) TrailingStop=MathRound(TrailingStop/2);

if(TrailingStop > 0) { // Check trailing stop
if(Bid-OrderOpenPrice() > TrailingStop*Point) {
if(OrderStopLoss() < (Bid - TrailingStop*Point)) {
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Blue);
Print("Modifying BUY order");
}
}
}
} else { // Check sold trade for close signal
if(isBuying1||isBuying5|| isClosing) {


OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

Print("Closing SELL order");
}

// if (CriticalMinus*Point<=Bid-OrderOpenPrice()) TrailingStop=MathRound(TrailingStop/2);

if(TrailingStop > 0) { // Control trailing stop
if(OrderOpenPrice() - Ask > TrailingStop*Point) {
if(OrderStopLoss() == 0 || OrderStopLoss() > Ask + TrailingStop*Point) {
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Red);
Print("Modifying SELL order");
}
}
}
}
}
}

///-------------------------------------------------------
////////////////////Устанавливаем размер лота по состоянию депозита/////
///-------------------------------------------------------
// If there is no open trade for this pair and this EA
if(numPos < 1) {
if(AccountFreeMargin() < 1000*Lots) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
HideTestIndicators(true);
//if (TimeYear(CurTime())<=2006 && TimeMonth(CurTime())<=8&& TimeDay(CurTime())<=25){ //kvota po date
//if (AccountNumber()==44448){

//if (TimeDay(CurTime())<=19){
totalOrders = OrdersTotal();
if(totalOrders==0)
{
MakePosition();
ts=0;
}
else
{

for(cnt=0; cnt {
OrderSelect(cnt, SELECT_BY_POS);
if(OrderMagicNumber()==ID_MagicNum)
searchID=true;
}
if (searchID==false){
MakePosition();
ts=0;
}
searchID=false;
}
}
// }//kvota po date
//}//po accounty
//}
return(0);

}

void calculateIndicators() { // Calculate indicators' value

macdHistCurrent = iMACD(NULL,1,12,26,9,PRICE_OPEN,MODE_MAIN,0);
macdHistPrevious = iMACD(NULL,1,12,26,9,PRICE_OPEN,MODE_MAIN,1);
macdSignalCurrent = iMACD(NULL,1,12,26,9,PRICE_OPEN,MODE_SIGNAL,0);
macdSignalPrevious = iMACD(NULL,1,12,26,9,PRICE_OPEN,MODE_SIGNAL,1);
stochHistCurrent = iStochastic(NULL,1,5,3,3,MODE_SMA,0,MODE_MAIN,0);
stochHistPrevious = iStochastic(NULL,1,5,3,3,MODE_SMA,0,MODE_MAIN,1);
stochSignalCurrent = iStochastic(NULL,1,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);
stochSignalPrevious = iStochastic(NULL,1,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
sarCurrent = iSAR(NULL,1,0.02,0.2,0); // Parabolic Sar Current
sarPrevious = iSAR(NULL,1,0.02,0.2,1); // Parabolic Sar Previuos
momCurrent = iMomentum(NULL,1,14,PRICE_OPEN,0); // Momentum Current
momPrevious = iMomentum(NULL,1,14,PRICE_OPEN,1); // Momentum Previous
sarCurrentH = iSAR(NULL,60,0.02,0.2,0);
sarPreviousH = iSAR(NULL,60,0.02,0.2,1);

macdHistCurrentM5 = iMACD(NULL,5,12,26,9,PRICE_OPEN,MODE_MAIN,0);
macdHistPreviousM5 = iMACD(NULL,5,12,26,9,PRICE_OPEN,MODE_MAIN,1);
macdSignalCurrentM5 = iMACD(NULL,5,12,26,9,PRICE_OPEN,MODE_SIGNAL,0);
macdSignalPreviousM5 = iMACD(NULL,5,12,26,9,PRICE_OPEN,MODE_SIGNAL,1);
stochHistCurrentM5 = iStochastic(NULL,5,5,3,3,MODE_SMA,0,MODE_MAIN,0);
stochHistPreviousM5 = iStochastic(NULL,5,5,3,3,MODE_SMA,0,MODE_MAIN,1);
stochSignalCurrentM5 = iStochastic(NULL,5,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);
stochSignalPreviousM5 = iStochastic(NULL,5,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
sarCurrentM5 = iSAR(NULL,5,0.02,0.2,0); // Parabolic Sar Current
sarPreviousM5 = iSAR(NULL,5,0.02,0.2,1); // Parabolic Sar Previuos
momCurrentM5 = iMomentum(NULL,5,14,PRICE_OPEN,0); // Momentum Current
momPreviousM5 = iMomentum(NULL,5,14,PRICE_OPEN,1); // Momentum Previous

// Check for BUY, SELL, and CLOSE signal

isBuying1 = (sarCurrent<=High[0] && sarPrevious>sarCurrent&& sarPreviousH>sarCurrentH && momCurrent<100 && macdHistCurrent isSelling1 = (sarCurrent>=Low[0] && sarPrevious100 && macdHistCurrent>macdSignalCurrent && stochHistCurrent>61);

isBuying5 = (sarCurrentM5<=iHigh(NULL,5,0) && sarPreviousM5>sarCurrentM5&&sarPreviousH>sarCurrentH&& momCurrentM5<100 && macdHistCurrentM5 isSelling5 = (sarCurrentM5>=iLow(NULL,5,0) && sarPreviousM5100 && macdHistCurrentM5>macdSignalCurrentM5 && stochHistCurrentM5>61);

isClosing = false;



}

void MakePosition(){

calculateIndicators();
if((isBuying1 && !isSelling1) || (isBuying5 && !isSelling5) && !isClosing) { // Check for BUY entry signal
if(isBuying1)ts=1; if(isBuying5) ts=5;
if(StopLoss > 0)
realSL = Ask - StopLoss * Point;
if(TakeProfit > 0)
realTP = Ask + TakeProfit * Point;

ticket = OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,slippage,realSL,realTP,nameEA+" - Magic: "+ID_MagicNum+" ",ID_MagicNum,0,Green); // Buy
SendMail(nameEA,"Alert: Opened long position "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
Print(nameEA+" - Opened long position");




if(ticket < 0) {
Print("OrderSend (" + nameEA + ") failed with error #" + GetLastError());
SendMail(nameEA,"OrderSend (" + nameEA + ") failed with error #" + GetLastError()+"@"+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);

} else Print("Trading: Buying");

}

if((isSelling1 && !isBuying1) || (isSelling5 && !isBuying5) && !isClosing) { // Check for SELL entry signal
if(isSelling1)ts=1; if(isSelling5) ts=5;
if(StopLoss > 0)
realSL = Bid + StopLoss * Point;
if(TakeProfit > 0)
realTP = Bid - TakeProfit * Point;

ticket = OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,slippage,realSL,realTP,nameEA+" - Magic: "+ID_MagicNum+" ",ID_MagicNum,0,Red); // Sell
SendMail(nameEA,"Alert: Opened short position "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
Print(nameEA+" - Opened short position");


if(ticket < 0) {
Print("OrderSend (" + nameEA + ") failed with error #" + GetLastError());
SendMail(nameEA,"OrderSend (" + nameEA + ") failed with error #" + GetLastError()+"@"+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);

} else Print("Trading: Selling");

}
}
//+------------------------------------------------------------------+

Если у кого то возникли вопросы по поводу использования советников - пишите комментарии.

Если у кого то возникло желание, что бы я для вас разработал программу советника под вашу торговую стратегию, пишите мне на email: jthotbox@gmail.com

9 комментариев:

Andrey комментирует...

Кинь какую-то ссылку по теме, а то мне сложно понять о чём идёт речь.

Paul D. комментирует...

Есть такое понятие как форекс, это всемирная торговая площадка для торговли валютами, если можно так сказать. Для торговли на этом рынке, есть кучи и уймы прог, одна из них Meta Trader, преобладающая в Украине и России.

Ну вот тебе ссылочку на где это можно потестить и попробовать себя в роли трейдера максимально дёшево.

http://liteforex.biz/

Анонимный комментирует...

Уважаемый Пашок, спасибо за открытый код советника...Но есть проблема на могу скомпилировать в экзешник...
1)KingMinute.mq4;141:4;'numPos' - expression on global scope not allowed
2)KingMinute.mq4;141:4;'numPos' - variable not defined
3)KingMinute.mq4;141:16;'{' - expression on global scope not allowed
4)KingMinute.mq4;176:1;'}' - unbalanced parentheses
...
Я сам плохо разбираюсь в кодах...а попробовать очень хочется.Помогите пожалуйста с этим справиться.

Анонимный комментирует...

Выдает эти же ошибки 1)KingMinute.mq4;141:4;'numPos' - expression on global scope not allowed
2)KingMinute.mq4;141:4;'numPos' - variable not defined
3)KingMinute.mq4;141:16;'{' - expression on global scope not allowed
4)KingMinute.mq4;176:1;'}' - unbalanced parentheses

Paul D. комментирует...

Где то ошибка влезла, в то время когда вставлял, код в блог.

Я сегодня постараюсь выложить файл, если есть такая возможность в блоге, в любом случае, давай email я тебе скину его

Paul D. комментирует...

Вот ссылки на советников

http://finance.ganenko-tyr.com/KingMinute.rar

Там в архиве сразу и KingMinute и KingMinuteOrig

Анонимный комментирует...

Спасиб, ща протестим, оставлю комменты. По поводу выложенного кода, сразу ясно что ошибка будет, кодировки могут не совпасть, шрифты - не во всех шрифтах есть весь набор символов, поля ввода текста на сайтах могут не поддерживать разные символы и т.д...
Лучше, чтобы стопудово было выкладывать в .txt с указанием кодировки и шрифта.

Анонимный комментирует...

А с какими индюками работает?

Анонимный комментирует...

прогноз форекс