我试图搜索找出如何在一定时间范围内搜索模式。显然,该模式可能会根据时间范围出现几次,这就是为什么我对重复的最大次数特别感兴趣。
为了说明我要进一步实现的目标,请说我正在搜索从2小时到15分钟图表的模式,然后在2小时图表中找到它,然后再钻入下一个1小时的时间范围,最后得出在1小时图上的两个模式中,我将继续30分钟(两个1小时模式)和15分钟,直到获得最大的时间。
我认为将需要一种返回下一个较低时间范围的方法。我已经能够写出来,请参见下面的代码。我真的很感谢您的帮助。
ENUM_TIMEFRAMES findLowerTimeframe(ENUM_TIMEFRAMES timePeriod)
{
int timeFrames[5] = {15, 20, 30, 60, 120};
int TFIndex=ArrayBsearch(timeFrames, (int)timePeriod);
return((ENUM_TIMEFRAMES) timeFrames[TFIndex - 1]);
}
Run Code Online (Sandbox Code Playgroud)
编辑
我没有添加特定的烛台图案,因为我认为这不是我的问题中最重要的部分。问题的症结在于如何在几个连续的时间框架内搜索模式,以找到该模式在该时间范围内出现的最大次数。
我想另一个条件添加到该解决方案在这个岗位。我希望当交易获利10点时,止损将增加10点。更具体地说,假设我已经设置了一个待处理的买单,止损位比开盘价低10点,止盈位为50点。如果交易获利10个点,那么止损将向上移动10个点,如果交易获利为20个点,则止损将向上移动另一个10个点,而当交易获利30和40个点时,同样会发生直到达到50点止盈为止。这里的想法是,止损会增加10个点,而利润会增加10个点,但是止损不会下降。因此,如果止损为获利10个点,而价格为获利23个点并且突然下降,它将以10个止损获利退出交易。
设置以上条件对我来说似乎很复杂。我还没完成。
以下是我要解决的代码的相关部分(请注意,其余代码与上述链接的问题解决方案相同)。
//=========================================================
//CLOSE EXPIRED STOP/EXECUTED ORDERS
//---------------------------------------------------------
for( int i=OrdersTotal()-1; i>=0; i-- ) {
if(OrderSelect( i, SELECT_BY_POS, MODE_TRADES ))
if( OrderSymbol() == Symbol() )
if( OrderMagicNumber() == viMagicId) {
if( (OrderType() == OP_BUYSTOP) || (OrderType() == OP_SELLSTOP) )
if((TimeCurrent()-OrderOpenTime()) >= viDeleteStopOrderAfterInSec)
OrderDelete(OrderTicket());
if( (OrderType() == OP_BUY) || (OrderType() == OP_SELL) )
if((TimeCurrent()-OrderOpenTime()) >= viDeleteOpenOrderAfterInSec) {
// For executed orders, need to close them
double closePrice = 0;
RefreshRates();
if(OrderType() == OP_BUY)
closePrice = Bid;
if(OrderType() == …Run Code Online (Sandbox Code Playgroud) 我已经编写了以下方法来在一段持续时间内以任意角度围绕另一个任意点旋转任意点.这个问题现在变得不规律,但最终我认为是理想的目的地.我需要让它顺利地移动到角度.
请注意,这些点与游戏对象无关.
从下图中,我试图LineRenderer在给定的时间段内将一个贝塞尔曲线的一个点(用a绘制)绕另一个点移动一个角度.这些点中没有一个与包含贝塞尔曲线的游戏对象的位置一致.
IEnumerator runMovement() {
yield return new WaitForSeconds(2.0f);
Vector2 pivot = points[3];
StartCoroutine(RotateControlPointWithDuration(pivot, 2.0f, 90.0f));
}
IEnumerator RotateControlPointWithDuration(Vector2 pivot, float duration, float angle)
{
float currentTime = 0.0f;
float ourTimeDelta = 0;
Vector2 startPos = points[0];
ourTimeDelta = Time.deltaTime;
float angleDelta = angle / duration; //how many degress to rotate in one second
while (currentTime < duration)
{
currentTime += Time.deltaTime;
ourTimeDelta = Time.deltaTime;
points[0] = new Vector2(Mathf.Cos(angleDelta * ourTimeDelta) * (startPos.x - pivot.x) - Mathf.Sin(angleDelta …Run Code Online (Sandbox Code Playgroud) 我正在尝试 Unity 的新预制工作流程。我想以编程方式在我已经创建的预制件上创建预制件变体。我使用的是Unity 2018.3.0b7。如何才能做到这一点?