int start()
{
//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
OrderSend(Symbol(),OP_BUY,Ask,5,0,Ask+TakeProfit*Point,0);
}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов
{
OrderSend(Symbol(),OP_SELL,Ask,5,0,Ask+TakeProfit*Point,0);
}
//----
return(0);
}
OrderSend(Symbol(),OP_SELL,Ask,5,0,Ask+TakeProfit*Point,0);
Эту строку вытащил из другого эксперта. А что означают в ней цифры 5 и 0?
//+------------------------------------------------------------------+
bool IsCondition()
{
bool result=true;
string field=" ";
string msg;
string title="Ошибка"; if (AccountNumber()>0)title=AccountNumber()+": "+title;
if (!IsConnected())
{
msg=msg+"Связь с сервером отсутствует"+field;
result=false;
}
if (!IsTradeAllowed())
{
if (!result) msg=msg+"\n";
msg=msg+"Торговля запрещена"+field;
result=false;
}
if (!result) MessageBox(msg,title,MB_OK|MB_ICONERROR);
return(result);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void ShowError()
{
string description;
int err=GetLastError();
switch(err)
{
case 0: return;
case 1: description="Нет ошибки, но результат неизвестен"; break;
case 2: description="Общая ошибка"; break;
case 3: description="Неправильные параметры"; break;
case 4: description="Торговый сервер занят"; break;
case 5: description="Старая версия клиентского терминала"; break;
case 6: description="Нет связи с торговым сервером"; break;
case 7: description="Недостаточно прав"; break;
case 8: description="Слишком частые запросы"; break;
case 9: description="Недопустимая операция нарушающая функционирование сервера"; break;
case 64: description="Счет заблокирован"; break;
case 65: description="Неправильный номер счета"; break;
case 128: description="Истек срок ожидания совершения сделки"; break;
case 129: description="Неправильная цена"; break;
case 130: description="Неправильные стопы"; break;
case 131: description="Неправильный объем"; break;
case 132: description="Рынок закрыт"; break;
case 133: description="Торговля запрещена"; break;
case 134: description="Недостаточно денег для совершения операции"; break;
case 135: description="Цена изменилась"; break;
case 136: description="Нет цен"; break;
case 137: description="Брокер занят"; break;
case 138: description="Новые цены"; break;
case 139: description="Ордер заблокирован и уже обрабатывается"; break;
case 140: description="Разрешена только покупка"; break;
case 141: description="Слишком много запросов"; break;
case 145: description="Модификация запрещена, так как ордер слишком близок к рынку"; break;
case 146: description="Подсистема торговли занята"; break;
case 147: description="Использование даты истечения ордера запрещено брокером"; break;
default : description="Неизвестная ошибка"; break;
}
string field=" ";
string msg="Ошибка #"+err+" "+description+field;
string title="Ошибка"; if (AccountNumber()>0)title=AccountNumber()+": "+title;
MessageBox(msg,title,MB_OK|MB_ICONERROR);
}
// End
//+------------------------------------------------------------------+
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green);
}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green);
}
//----
return(0);
}
//+------------------------------------------------------------------+
일반적으로 매수와 매도를 위한 OrderSend는 약간 다르게 작성됩니다. 매도호가에 매수하고 매도호가에 매도하기 때문입니다! 그리고 발자취도 닫습니다 ... 당신과 함께 - 모든 것이 같은 가격에 있습니다 ... 게다가, 그것은 lot = 1로 작업을 제공합니다. 이 금액에 해당하는 보증금이 있습니까? 그리고 로그에 무엇이 기록되어 있습니까? 왜 작동하지 않습니까?
당신은 Bid와 Ask의 차이점을 모르고, 숏 포지션과 롱 포지션의 차이를 이해하지 못합니다. 손절매와 이익실현이 무엇인지 모릅니다. 당신은 당신이 이미 쓴 것을 이해하지 못합니다. 무작위로 코딩하려고 합니다. 누가 당신을 도울 수 있습니까???? 매트를 배우십시오. 부분. 모든 질문에 대한 답변이 완료되었습니다. 나는 당신의 교과서를 인용하는 요점을 이해하지 못합니다.
int start() { //---- if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов { OrderSend(Symbol(),OP_BUY,Ask,5,0,Ask+TakeProfit*Point,0); } if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов { OrderSend(Symbol(),OP_SELL,Ask,5,0,Ask+TakeProfit*Point,0); } //---- return(0); }뭐가 문제 야?
//+------------------------------------------------------------------+ //| Expert-000001.mq4 | //| Copyright © 2008, salesman*** | //| http://www.forexgrand.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, salesman***" #property link "http://www.forexgrand.ru" extern int StopLoss=12; // Stop Loss extern int TakeProfit=3; // Take Profit extern int Percent=100; // Объем сделки в % extern int Delta=30; // Сигнал приказа в пунктах extern string _Comment = "Money-money-money"; // Комментарий к ордеру extern int MagicNumber =55555; // Order ID //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов { OrderSend(Symbol(),OP_BUY,Ask,5,0,Ask*Point,0); } if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов { OrderSend(Symbol(),OP_SELL,Ask,5,0,Ask*Point,0); } //---- return(0); } //+------------------------------------------------------------------+OrderSend 함수(문자열 기호, int cmd, 이중 볼륨, 이중 가격, int 미끄러짐, 이중 손절매, 이중 이익 실현, 문자열 주석=NULL, int magic=0, datetime 만료=0, color arrow_color=CLR_NONE)
매개변수: 기호 - 거래 작업이 수행되는 금융 상품의 이름.
cmd - 거래 작업. 모든 거래 작업 값이 될 수 있습니다.
볼륨 - 로트 수.
가격 - 시작 가격. 슬리피지 - 시장 주문(구매 또는 판매 주문)에 대한 최대 허용 가격 편차.
stoploss - 손실 수준에 도달했을 때의 포지션 종가(손실 수준이 없는 경우 0).
takeprofit - 이익 수준에 도달했을 때 포지션 종가입니다(이익 수준이 없는 경우 0).
comment - 주석 텍스트를 주문합니다. 댓글의 마지막 부분은 거래 서버에 의해 변경될 수 있습니다.
magic - 주문의 매직 번호입니다. 사용자 정의 식별자로 사용할 수 있습니다.
만료 - 보류 중인 주문의 만료 날짜입니다.
arrow_color - 차트의 시작 화살표 색상입니다. 매개변수가 없거나 해당 값이 CLR_NONE과 같으면 시작 화살표가 차트에 표시되지 않습니다.
당신은 그것을 어디에 가지고 있습니까? - OrderSend 대신 어떤 종류의 스텁이 있습니다.
그리고 Ask*Point 계산의 결과는 다음과 같습니다.
???전체 코드는 다음과 같습니다.
//+------------------------------------------------------------------+ //| Expert-000001.mq4 | //| Copyright © 2008, salesman*** | //| http://www.forexgrand.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, salesman***" #property link "http://www.forexgrand.ru" extern int StopLoss=12; // Stop Loss extern int TakeProfit=3; // Take Profit extern int Percent=70; // Объем сделки в % extern int Slippage = 3; // Максимальное отклонение от запрошенной цены extern int Delta=2; // Сигнал приказа в пунктах extern string _Comment = "Money-money-money"; // Комментарий к ордеру extern int MagicNumber =55555; // Order ID int ticket; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов { ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green); } if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов { ticket=OrderSend(Symbol(),OP_SELL,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green); } //---- return(0); } //+------------------------------------------------------------------+빠른 테스트를 위해 Delta=2로 설정했습니다.extern int Delta=2;
아마도 어떻게 든 이것을 구현하여 오류를 이해할 수 있습니다.
//+------------------------------------------------------------------+ bool IsCondition() { bool result=true; string field=" "; string msg; string title="Ошибка"; if (AccountNumber()>0)title=AccountNumber()+": "+title; if (!IsConnected()) { msg=msg+"Связь с сервером отсутствует"+field; result=false; } if (!IsTradeAllowed()) { if (!result) msg=msg+"\n"; msg=msg+"Торговля запрещена"+field; result=false; } if (!result) MessageBox(msg,title,MB_OK|MB_ICONERROR); return(result); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void ShowError() { string description; int err=GetLastError(); switch(err) { case 0: return; case 1: description="Нет ошибки, но результат неизвестен"; break; case 2: description="Общая ошибка"; break; case 3: description="Неправильные параметры"; break; case 4: description="Торговый сервер занят"; break; case 5: description="Старая версия клиентского терминала"; break; case 6: description="Нет связи с торговым сервером"; break; case 7: description="Недостаточно прав"; break; case 8: description="Слишком частые запросы"; break; case 9: description="Недопустимая операция нарушающая функционирование сервера"; break; case 64: description="Счет заблокирован"; break; case 65: description="Неправильный номер счета"; break; case 128: description="Истек срок ожидания совершения сделки"; break; case 129: description="Неправильная цена"; break; case 130: description="Неправильные стопы"; break; case 131: description="Неправильный объем"; break; case 132: description="Рынок закрыт"; break; case 133: description="Торговля запрещена"; break; case 134: description="Недостаточно денег для совершения операции"; break; case 135: description="Цена изменилась"; break; case 136: description="Нет цен"; break; case 137: description="Брокер занят"; break; case 138: description="Новые цены"; break; case 139: description="Ордер заблокирован и уже обрабатывается"; break; case 140: description="Разрешена только покупка"; break; case 141: description="Слишком много запросов"; break; case 145: description="Модификация запрещена, так как ордер слишком близок к рынку"; break; case 146: description="Подсистема торговли занята"; break; case 147: description="Использование даты истечения ордера запрещено брокером"; break; default : description="Неизвестная ошибка"; break; } string field=" "; string msg="Ошибка #"+err+" "+description+field; string title="Ошибка"; if (AccountNumber()>0)title=AccountNumber()+": "+title; MessageBox(msg,title,MB_OK|MB_ICONERROR); } // End //+------------------------------------------------------------------+어쩐지 저한테 안맞네요....
전체 코드는 다음과 같습니다.
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов { ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green); } if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов { ticket=OrderSend(Symbol(),OP_SELL,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green); } //---- return(0); } //+------------------------------------------------------------------+일반적으로 매수와 매도를 위한 OrderSend는 약간 다르게 작성됩니다. 매도호가에 매수하고 매도호가에 매도하기 때문입니다! 그리고 발자취도 닫습니다 ... 당신과 함께 - 모든 것이 같은 가격에 있습니다 ...게다가, 그것은 lot = 1로 작업을 제공합니다. 이 금액에 해당하는 보증금이 있습니까? 그리고 로그에 무엇이 기록되어 있습니까? 왜 작동하지 않습니까?
당신은 Bid와 Ask의 차이점을 모르고, 숏 포지션과 롱 포지션의 차이를 이해하지 못합니다. 손절매와 이익실현이 무엇인지 모릅니다. 당신은 당신이 이미 쓴 것을 이해하지 못합니다. 무작위로 코딩하려고 합니다. 누가 당신을 도울 수 있습니까???? 매트를 배우십시오. 부분. 모든 질문에 대한 답변이 완료되었습니다. 나는 당신의 교과서를 인용하는 요점을 이해하지 못합니다.
어쩐지 저한테 안맞네요....
빠른 테스트를 위해 Delta=2로 설정했습니다.
extern int Delta=2;
무엇 때문에? 테스터 사용법을 알고 있습니까?
나는 남자 친구가 있었다. 그는 1년 동안 외환 거래를 했지만 여전히 롱 포지션은 오랫동안 시장에 있었던 포지션이라고 생각했습니다. 그리고 짧은 것은 하나입니다 - "글쎄, 삐삐처럼, 헐 ..."!
그리고 어떻게 생각하세요?