이러한 질문: double은 0에서 4까지, datetame은 5에서 9까지, int는 10에서 14까지 저장되는 1차원 배열을 만들고 싶습니다. 이것을 mql4에서 구성할 수 있습니까? 그렇다면 어떻게 구조가 있는 예제를 보았는지 보여 주지만 C++로 되어 있지만 사이트에 대한 링크를 잃어버렸습니까?
여기서 흥미로운 점은 사람이 기본 사항을 배우지 않고 이미 이 모든 것을 알고 있다는 것을 보여주려고 하고, 여러분 모두가 그가 일을 하지 못하도록 막는다는 것입니다.)
인사말. 나는 유능한 비디오 "MQL4에서 MQL5로 - Metatrader 5를 위한 Expert Advisor를 다시 작성하는 방법"을 보았습니다. 작가님께 큰 존경을 표합니다. 직접 시도하기로 결정했습니다. 썼다. 아이디어는 다음과 같습니다. 1. 입력에서 dtriger = 1로 설정했습니다. 구매가 열립니다. 2. 입력에서 dtriger = -1로 설정 - Sell이 열립니다. 3. 입력에서 dtriger = 0으로 설정했습니다. 열려 있는 모든 항목이 닫힙니다. 도움말 페이지에서 MT5에서 반대 위치를 유지할 수 없다고 읽었습니다. 그리고 나는 그것들을 가지고 있다. 질문: 현재 위치의 마감을 올바르게 등록하는 방법은 다음과 같습니다. 오프닝 턴(역방향). 매우 감사합니다.
입력 int 트리거 = 0; 입력 더블 StartLot = 0.01; 입력 이중 lpos_volume = 1.0; 입력 intStep = 10; 입력 정수 MagicNumber = 12345; // 매직 누아버 입력 int 미끄러짐 = 30; // 슬립 페이지
인트 트리거; 정수 dStep;
//+----------------------------------------------- --------------------+ //| 전문가 초기화 기능 | //+----------------------------------------------- --------------------+ int OnInit() { dStep = 단계 ; dtrigger = 트리거 ;
if (!o_symbol.Name(Symbol())) 반환(INIT_FAILED);
새로 고침();
o_trade.SetExpertMagicNumber(MagicNumber) ;
if (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_FOK)) { o_trade.SetTypeFilling(ORDER_FILLING_FOK); } 그렇지 않으면 (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_IOC)) { o_trade.SetTypeFilling(ORDER_FILLING_IOC); } 또 다른 { o_trade.SetTypeFilling( ORDER_FILLING_RETURN ); } o_trade.SetDeviationInPoints(슬립페이지);
C ++에 관한 책을 적어도 몇 권 읽기 시작하십시오. 귀하의 질문은 두뇌 폭발입니다. 기술 용어를 작성하십시오. 언뜻보기에는 특정 질문을하는 것처럼 보이지만 실제로는 본질을 이해하지 않고 용어로 작동합니다 .. .. 매크로는 무엇을 반환합니까? 어디로 돌아올 것인가? 매크로 본문에 다시 로드할 수 있는 기능이 있습니다.... 귀하의 질문이 어떻게 생겼는지 설명할 수도 없습니다.
매크로가 무엇인지 이해하려면 매크로 SUBSTITUTION이라는 용어를 올바르게 작성하십시오. 매크로가 무엇인지 이해하는 것이 더 쉬울 것입니다.
mql4에서는 C++의 가능성도 축소되었습니다. 즉, 언어가 너무 정적입니다. 우리는 내 아이디어가 실패했다고 말할 수 있습니다. 클래스없이 간단한 오버로드를 작성하고 인수를 추가하고 0을 할당했습니다. 매크로를 호출하려고 시도했지만 3 가지 기능이 있다는 오류가 발생했습니다. 당신은 여전히 어떤 돌을 불러야 할지 그리고 내가 나중에 어떤 돌을 만날 것인지에 대해 침묵하는 방법을 칠해야 한다는 것이 밝혀졌습니다. 아마 아무것도 하지 않는 것이 더 나을 것입니다. 그러면 잘못될 수 없습니다.
이러한 질문: double은 0에서 4까지, datetame은 5에서 9까지, int는 10에서 14까지 저장되는 1차원 배열을 만들고 싶습니다. 이것을 mql4에서 구성할 수 있습니까? 그렇다면 어떻게 구조가 있는 예제를 보았는지 보여 주지만 C++로 되어 있지만 사이트에 대한 링크를 잃어버렸습니까?
각 유형에 대해 특정 배열 셀이 있는 경우 배열 대신 구조를 만드십시오.
각 유형에 대해 특정 배열 셀이 있는 경우 배열 대신 구조를 만드십시오.
불행히도 그는 작업을 공식화할 수도 없습니다
한편으로 커뮤니케이션은 그가 C++/MQL의 엄격한 타이핑에서 벗어나고 싶어하는 것처럼 보입니다. 여기에 토론이 있는 좋은 주제가 있습니다. 하지만 그것이 그를 도울 수 있을지 의심스럽습니다. https://www.mql5.com/ru/ 포럼/294094
토론 과정에서(내 생각에는 이미 3개월 동안 진행되었습니까? ) @Seric29 는 여전히 기능 서명에 대한 설명에서 벗어나 일종의 "팬텀" 기능 을 가져와야 한다는 것이 지속적으로 밝혀졌습니다. 임의의 수의 매개변수를 전달할 수 있는
그런 다음 토론 중에 다차원 동적 배열이 이 모든 것에 참여해야 하며 이러한 배열은 매개변수로 함수에 전달되어야 한다는 것이 밝혀졌습니다.
저것들. 공식화 된 작업이 전혀 없으며 솔루션이 끊임없이 "현장에서 외침"으로 끝나고 개발자가 무언가의 기능을 줄이고 루프 연산자의 소스 코드를 제공하면 다시 실행하겠습니다. 마지막:
mql4 개발자에게 편지를 쓰는 방법, 컴파일러 코드를 보는 방법, 정적이지 않도록 추가 기능을 추가할 수 있습니까?
... 일반적으로 이와 같은 것 ... "뇌 제거"라는 문구는 말할 수있는 최소한의 것입니다))))
그렇기 때문에 자세한 정보는 제공하지 않습니다.
기본을 배우는 것에서 벗어날 수 없습니다.
기본을 배우는 것에서 벗어날 수 없습니다.
여기서 흥미로운 점은 사람이 기본 사항을 배우지 않고 이미 이 모든 것을 알고 있다는 것을 보여주려고 하고, 여러분 모두가 그가 일을 하지 못하도록 막는다는 것입니다.)
여기서 흥미로운 점은 사람이 기본 사항을 배우지 않고 이미 이 모든 것을 알고 있다는 것을 보여주려고 하고, 여러분 모두가 그가 일을 하지 못하도록 막는다는 것입니다.)
인사말. 나는 유능한 비디오 "MQL4에서 MQL5로 - Metatrader 5를 위한 Expert Advisor를 다시 작성하는 방법"을 보았습니다.
작가님께 큰 존경을 표합니다. 직접 시도하기로 결정했습니다. 썼다. 아이디어는 다음과 같습니다.
1. 입력에서 dtriger = 1로 설정했습니다. 구매가 열립니다.
2. 입력에서 dtriger = -1로 설정 - Sell이 열립니다.
3. 입력에서 dtriger = 0으로 설정했습니다. 열려 있는 모든 항목이 닫힙니다.
도움말 페이지에서 MT5에서 반대 위치를 유지할 수 없다고 읽었습니다.
그리고 나는 그것들을 가지고 있다.
질문: 현재 위치의 마감을 올바르게 등록하는 방법은 다음과 같습니다.
오프닝 턴(역방향).
매우 감사합니다.
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
cPositionInfo o_position;
CTrade o_trade;
CSymbolInfo o_symbol;
COOrderInfo o_order;
입력 int 트리거 = 0;
입력 더블 StartLot = 0.01;
입력 이중 lpos_volume = 1.0;
입력 intStep = 10;
입력 정수 MagicNumber = 12345; // 매직 누아버
입력 int 미끄러짐 = 30; // 슬립 페이지
인트 트리거;
정수 dStep;
//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
int OnInit()
{
dStep = 단계 ;
dtrigger = 트리거 ;
if (!o_symbol.Name(Symbol()))
반환(INIT_FAILED);
새로 고침();
o_trade.SetExpertMagicNumber(MagicNumber) ;
if (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_FOK))
{
o_trade.SetTypeFilling(ORDER_FILLING_FOK);
}
그렇지 않으면 (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_IOC))
{
o_trade.SetTypeFilling(ORDER_FILLING_IOC);
}
또 다른
{
o_trade.SetTypeFilling( ORDER_FILLING_RETURN );
}
o_trade.SetDeviationInPoints(슬립페이지);
if (o_symbol.Digits() == 3 || o_symbol.Digits() == 5 )
{
d스텝 = 10 ;
}
반환(INIT_SUCCESSED);
}
//+----------------------------------------------- --------------------+
//| 전문적인 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
무효 OnDeinit(const int 이유)
{
}
//+----------------------------------------------- --------------------+
//| 전문가 틱 기능 |
//+----------------------------------------------- --------------------+
무효 OnTick()
{
날짜 시간 lpos_time = 0;
이중 lpos_price_open = 0.0;
ENUM_POSITION_TYPE lpos_type = -1;
정수 pos_count = 0;
더블 sum_profit = 0;
for (int i = PositionsTotal() - 1; i>=0; i--)
{
if (o_position.SelectByIndex(i))
{
if (o_position.Symbol() == o_symbol.Name() && o_position.Magic() == MagicNumber)
{
if (o_position.Time() > lpos_time)
{
lpos_time = o_position.Time(); //주문오픈타임();
lpos_price_open = o_position.PriceOpen(); //주문오픈가격();
lpos_type = o_position.PositionType() ; //주문유형();
}
pos_count++;
sum_profit = sum_profit + o_position.Commission() + o_position.Swap() + o_position.Profit() ;
}
}
}
// 대기 중인 주문의 수를 계산합니다.
정수 stop_count=0;
for (int i=OrdersTotal()-1; i >=0; i--)
{
if (o_order.SelectByIndex(i))
{
if (o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber)
stop_count++;
}
}
if (! 새로 고침 빈도())
반품;
if(트리거 == 0 )
{
CloseAll();
반품;
}
// + ----- 첫 번째 주문 열기 ++++++++++
if (pos_count == 0 && stop_count == 0 )
{
if ( dtrigger == -1 && lpos_type != POSITION_TYPE_SELL)
{
o_trade.Sell(StartLot * lpos_volume, o_symbol.Name()); // 셀 L 11111
}
if ( 디트리거 == 1 && lpos_type != POSITION_TYPE_BUY )
{
o_trade.Buy(StartLot * lpos_volume, o_symbol.Name()); // BU Y 11111
}
}
// + ----- 뒤집기 ++++++++++++++++++++++++++++++++
if (pos_count>0)
{
if(lpos_type == POSITION_TYPE_BUY )
{
if ( dtrigger == -1 )
{
o_trade.Sell(StartLot * lpos_volume, o_symbol.Name()); // 매도 +++++
}
}
if (lpos_type==POSITION_TYPE_SELL )
{
if ( 트리거 == 1 )
{
o_trade.Buy(StartLot * lpos_volume, o_symbol.Name()); // 구매 +++++
}
}
}
if(pos_count>0 && stop_count>0)
DeleteStopOrders() ;
}
//------------------------------------------------ -----------
bool 새로 고침 비율()
{
if (!o_symbol.RefreshRates())
반환(거짓) ;
if (o_symbol.Ask() == 0 || o_symbol.Bid() == 0)
반환(거짓);
반환(참);
}
//--- ------------------------------------------- --------- ------------
bool IsFillingTypeAllowed(문자열 기호, int fill_type)
{
정수 채우기 = (int)SymbolInfoInteger(기호, SYMBOL_FILLING_MODE);
return((채우기 && 채우기 유형) == 채우기 유형) ;
}
// ------------------------------------------------ --
CloseAll() 무효화
{
for (int 인덱스 = PositionsTotal()-1, 인덱스 >=0, 인덱스--)
{
if (o_position.SelectByIndex(인덱스))
{
if (o_position.Symbol() == o_symbol.Name() && o_position.Magic() == MagicNumber)
{
o_trade.PositionClose(o_position.Ticket());
}
}
}
}
//------------------------------------------------ -----------
// 모든 보류 주문 삭제
//--------------------------------------------
무효 DeleteStopOrders()
{
for (int i = OrdersTotal() - 1; i >= 0; i-- )
{
if (o_order.SelectByIndex(i))
if(o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber)
o_trade.OrderDelete(o_order.Ticket());
}
}
//+----------------------------------------------- --------------------+
인사말....
코드를 올바르게 붙여넣으십시오.
코드를 올바르게 붙여넣으십시오.
C ++에 관한 책을 적어도 몇 권 읽기 시작하십시오. 귀하의 질문은 두뇌 폭발입니다. 기술 용어를 작성하십시오. 언뜻보기에는 특정 질문을하는 것처럼 보이지만 실제로는 본질을 이해하지 않고 용어로 작동합니다 .. .. 매크로는 무엇을 반환합니까? 어디로 돌아올 것인가? 매크로 본문에 다시 로드할 수 있는 기능이 있습니다.... 귀하의 질문이 어떻게 생겼는지 설명할 수도 없습니다.
매크로가 무엇인지 이해하려면 매크로 SUBSTITUTION이라는 용어를 올바르게 작성하십시오. 매크로가 무엇인지 이해하는 것이 더 쉬울 것입니다.
mql4에서는 C++의 가능성도 축소되었습니다. 즉, 언어가 너무 정적입니다. 우리는 내 아이디어가 실패했다고 말할 수 있습니다. 클래스없이 간단한 오버로드를 작성하고 인수를 추가하고 0을 할당했습니다. 매크로를 호출하려고 시도했지만 3 가지 기능이 있다는 오류가 발생했습니다. 당신은 여전히 어떤 돌을 불러야 할지 그리고 내가 나중에 어떤 돌을 만날 것인지에 대해 침묵하는 방법을 칠해야 한다는 것이 밝혀졌습니다. 아마 아무것도 하지 않는 것이 더 나을 것입니다. 그러면 잘못될 수 없습니다.
mql4에서는 C++의 가능성도 축소되었습니다. 즉, 언어가 너무 정적입니다.
구체적으로 무엇을 잘랐습니까?
즉, 필요하지 않습니다. 특히 Google조차도 " 너무 정적인 언어"를 모르기 때문에 C ++는 처음에는 정적으로 유형이 지정된 언어이고 생각은 단순히 의미가 없습니다. 그냥 그렇습니다.
아마 아무것도 하지 않는 것이 더 나을 것입니다. 그러면 잘못될 수 없습니다.
간략한 RTFM( lurkmore )
순전히 미학적 질문입니다.
여기에서 어떻게 나만의 그림을 만들 수 있습니까? MT4