For above issue I use this workaround now. You can't use the parameters from enterLong/enterShort directly due the hidden conversion.

Code:
#define TMF_PTR_ARG 7

void* getTmfPointer(TRADE* pTrade)
{
	void* p = NULL;
	
	if (pTrade)
	{
		memcpy(&p, &pTrade->fArg[TMF_PTR_ARG], sizeof(float));
	}
	
	return p;
}

void setTmfPointer(TRADE* pTrade, void* p)
{
	if (pTrade)
	{
		memcpy(&pTrade->fArg[TMF_PTR_ARG], &p, sizeof(float));
	}
}


struct MyData
{
	int member1;
	int member2;
};

int tmf()
{
	struct MyData* pMyData = getTmfPointer(ThisTrade);
	return 0;
}

struct MyData g_myData;

void run()
{	
	if (Bar == StartBar)
	{
		TRADE* pTrade = enterLong(tmf);
		setTmfPointer(pTrade, &g_myData);
	}
}